{
  "contractName": "ActionInterface",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "_params",
          "type": "bytes32[]"
        }
      ],
      "name": "action",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity ^0.4.18;\n\nimport \"./Controller.sol\";\nimport \"./Reputation.sol\";\nimport \"./DAOToken.sol\";\nimport \"zeppelin-solidity/contracts/ownership/Ownable.sol\";\nimport \"zeppelin-solidity/contracts/token/StandardToken.sol\";\n\n\ncontract ActionInterface {\n    function action(bytes32[] _params) public returns(bool);\n}\n\n\n/**\n * @title An Avatar holds tokens, reputation and ether for a controller\n */\ncontract Avatar is Ownable {\n    bytes32 public orgName;\n    DAOToken public nativeToken;\n    Reputation public nativeReputation;\n\n    event GenericAction(address indexed _action, bytes32[] _params);\n    event SendEther(uint _amountInWei, address indexed _to);\n    event ExternalTokenTransfer(address indexed _externalToken, address indexed _to, uint _value);\n    event ExternalTokenTransferFrom(address indexed _externalToken, address _from, address _to, uint _value);\n    event ExternalTokenIncreaseApproval(StandardToken indexed _externalToken, address _spender, uint _addedValue);\n    event ExternalTokenDecreaseApproval(StandardToken indexed _externalToken, address _spender, uint _subtractedValue);\n    event ReceiveEther(address indexed _sender, uint _value);\n\n    /**\n    * @dev the constructor takes organization name, native token and reputation system\n    and creates an avatar for a controller\n    */\n    function Avatar(bytes32 _orgName, DAOToken _nativeToken, Reputation _nativeReputation) public {\n        orgName = _orgName;\n        nativeToken = _nativeToken;\n        nativeReputation = _nativeReputation;\n    }\n\n    /**\n    * @dev enables an avatar to receive ethers\n    */\n    function() public payable {\n        ReceiveEther(msg.sender, msg.value);\n    }\n\n    /**\n    * @dev call an action function on an ActionInterface.\n    * This function use delegatecall and might expose the organization to security\n    * risk. Use this function only if you really knows what you are doing.\n    * @param _action the address of the contract to call.\n    * @param _params the params for the call.\n    * @return bool which represents success\n    */\n    function genericAction(address _action, bytes32[] _params)\n    public onlyOwner returns(bool)\n    {\n        GenericAction(_action, _params);\n        // solium-disable-next-line security/no-low-level-calls\n        return _action.delegatecall(bytes4(keccak256(\"action(bytes32[])\")),\n        uint256(32),// length of length of the array\n        uint256(_params.length), // length of the array\n        _params);                 // array itself);\n    }\n\n    /**\n    * @dev send ethers from the avatar's wallet\n    * @param _amountInWei amount to send in Wei units\n    * @param _to send the ethers to this address\n    * @return bool which represents success\n    */\n    function sendEther(uint _amountInWei, address _to) public onlyOwner returns(bool) {\n        _to.transfer(_amountInWei);\n        SendEther(_amountInWei, _to);\n        return true;\n    }\n\n    /**\n    * @dev external token transfer\n    * @param _externalToken the token contract\n    * @param _to the destination address\n    * @param _value the amount of tokens to transfer\n    * @return bool which represents success\n    */\n    function externalTokenTransfer(StandardToken _externalToken, address _to, uint _value)\n    public onlyOwner returns(bool)\n    {\n        _externalToken.transfer(_to, _value);\n        ExternalTokenTransfer(_externalToken, _to, _value);\n        return true;\n    }\n\n    /**\n    * @dev external token transfer from a specific account\n    * @param _externalToken the token contract\n    * @param _from the account to spend token from\n    * @param _to the destination address\n    * @param _value the amount of tokens to transfer\n    * @return bool which represents success\n    */\n    function externalTokenTransferFrom(\n        StandardToken _externalToken,\n        address _from,\n        address _to,\n        uint _value\n    )\n    public onlyOwner returns(bool)\n    {\n        _externalToken.transferFrom(_from, _to, _value);\n        ExternalTokenTransferFrom(_externalToken, _from, _to, _value);\n        return true;\n    }\n\n    /**\n    * @dev increase approval for the spender address to spend a specified amount of tokens\n    *      on behalf of msg.sender.\n    * @param _externalToken the address of the Token Contract\n    * @param _spender address\n    * @param _addedValue the amount of ether (in Wei) which the approval is referring to.\n    * @return bool which represents a success\n    */\n    function externalTokenIncreaseApproval(StandardToken _externalToken, address _spender, uint _addedValue)\n    public onlyOwner returns(bool)\n    {\n        _externalToken.increaseApproval(_spender, _addedValue);\n        ExternalTokenIncreaseApproval(_externalToken, _spender, _addedValue);\n        return true;\n    }\n\n    /**\n    * @dev decrease approval for the spender address to spend a specified amount of tokens\n    *      on behalf of msg.sender.\n    * @param _externalToken the address of the Token Contract\n    * @param _spender address\n    * @param _subtractedValue the amount of ether (in Wei) which the approval is referring to.\n    * @return bool which represents a success\n    */\n    function externalTokenDecreaseApproval(StandardToken _externalToken, address _spender, uint _subtractedValue )\n    public onlyOwner returns(bool)\n    {\n        _externalToken.decreaseApproval(_spender, _subtractedValue);\n        ExternalTokenDecreaseApproval(_externalToken,_spender, _subtractedValue);\n        return true;\n    }\n\n}\n",
  "sourcePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/Avatar.sol",
  "ast": {
    "attributes": {
      "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/Avatar.sol",
      "exportedSymbols": {
        "ActionInterface": [
          3598
        ],
        "Avatar": [
          3873
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.4",
            ".18"
          ]
        },
        "id": 3584,
        "name": "PragmaDirective",
        "src": "0:24:6"
      },
      {
        "attributes": {
          "SourceUnit": 4968,
          "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/Controller.sol",
          "file": "./Controller.sol",
          "scope": 3874,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3585,
        "name": "ImportDirective",
        "src": "26:26:6"
      },
      {
        "attributes": {
          "SourceUnit": 5353,
          "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/Reputation.sol",
          "file": "./Reputation.sol",
          "scope": 3874,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3586,
        "name": "ImportDirective",
        "src": "53:26:6"
      },
      {
        "attributes": {
          "SourceUnit": 5208,
          "absolutePath": "/Users/oren/daostack/daostack2/daostack/contracts/controller/DAOToken.sol",
          "file": "./DAOToken.sol",
          "scope": 3874,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3587,
        "name": "ImportDirective",
        "src": "80:24:6"
      },
      {
        "attributes": {
          "SourceUnit": 11446,
          "absolutePath": "zeppelin-solidity/contracts/ownership/Ownable.sol",
          "file": "zeppelin-solidity/contracts/ownership/Ownable.sol",
          "scope": 3874,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3588,
        "name": "ImportDirective",
        "src": "105:59:6"
      },
      {
        "attributes": {
          "SourceUnit": 12000,
          "absolutePath": "zeppelin-solidity/contracts/token/StandardToken.sol",
          "file": "zeppelin-solidity/contracts/token/StandardToken.sol",
          "scope": 3874,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3589,
        "name": "ImportDirective",
        "src": "165:61:6"
      },
      {
        "attributes": {
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": false,
          "linearizedBaseContracts": [
            3598
          ],
          "name": "ActionInterface",
          "scope": 3874
        },
        "children": [
          {
            "attributes": {
              "body": null,
              "constant": false,
              "implemented": false,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "action",
              "payable": false,
              "scope": 3598,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_params",
                      "scope": 3597,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32[] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "bytes32[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 3590,
                            "name": "ElementaryTypeName",
                            "src": "276:7:6"
                          }
                        ],
                        "id": 3591,
                        "name": "ArrayTypeName",
                        "src": "276:9:6"
                      }
                    ],
                    "id": 3592,
                    "name": "VariableDeclaration",
                    "src": "276:17:6"
                  }
                ],
                "id": 3593,
                "name": "ParameterList",
                "src": "275:19:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3597,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3594,
                        "name": "ElementaryTypeName",
                        "src": "310:4:6"
                      }
                    ],
                    "id": 3595,
                    "name": "VariableDeclaration",
                    "src": "310:4:6"
                  }
                ],
                "id": 3596,
                "name": "ParameterList",
                "src": "309:6:6"
              }
            ],
            "id": 3597,
            "name": "FunctionDefinition",
            "src": "260:56:6"
          }
        ],
        "id": 3598,
        "name": "ContractDefinition",
        "src": "229:89:6"
      },
      {
        "attributes": {
          "contractDependencies": [
            11445
          ],
          "contractKind": "contract",
          "documentation": "@title An Avatar holds tokens, reputation and ether for a controller",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            3873,
            11445
          ],
          "name": "Avatar",
          "scope": 3874
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "Ownable",
                  "referencedDeclaration": 11445,
                  "type": "contract Ownable"
                },
                "id": 3599,
                "name": "UserDefinedTypeName",
                "src": "420:7:6"
              }
            ],
            "id": 3600,
            "name": "InheritanceSpecifier",
            "src": "420:7:6"
          },
          {
            "attributes": {
              "constant": false,
              "name": "orgName",
              "scope": 3873,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 3601,
                "name": "ElementaryTypeName",
                "src": "434:7:6"
              }
            ],
            "id": 3602,
            "name": "VariableDeclaration",
            "src": "434:22:6"
          },
          {
            "attributes": {
              "constant": false,
              "name": "nativeToken",
              "scope": 3873,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract DAOToken",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "DAOToken",
                  "referencedDeclaration": 5207,
                  "type": "contract DAOToken"
                },
                "id": 3603,
                "name": "UserDefinedTypeName",
                "src": "462:8:6"
              }
            ],
            "id": 3604,
            "name": "VariableDeclaration",
            "src": "462:27:6"
          },
          {
            "attributes": {
              "constant": false,
              "name": "nativeReputation",
              "scope": 3873,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract Reputation",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "Reputation",
                  "referencedDeclaration": 5352,
                  "type": "contract Reputation"
                },
                "id": 3605,
                "name": "UserDefinedTypeName",
                "src": "495:10:6"
              }
            ],
            "id": 3606,
            "name": "VariableDeclaration",
            "src": "495:34:6"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "GenericAction"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_action",
                      "scope": 3613,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3607,
                        "name": "ElementaryTypeName",
                        "src": "556:7:6"
                      }
                    ],
                    "id": 3608,
                    "name": "VariableDeclaration",
                    "src": "556:23:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_params",
                      "scope": 3613,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32[] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "bytes32[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 3609,
                            "name": "ElementaryTypeName",
                            "src": "581:7:6"
                          }
                        ],
                        "id": 3610,
                        "name": "ArrayTypeName",
                        "src": "581:9:6"
                      }
                    ],
                    "id": 3611,
                    "name": "VariableDeclaration",
                    "src": "581:17:6"
                  }
                ],
                "id": 3612,
                "name": "ParameterList",
                "src": "555:44:6"
              }
            ],
            "id": 3613,
            "name": "EventDefinition",
            "src": "536:64:6"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "SendEther"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_amountInWei",
                      "scope": 3619,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3614,
                        "name": "ElementaryTypeName",
                        "src": "621:4:6"
                      }
                    ],
                    "id": 3615,
                    "name": "VariableDeclaration",
                    "src": "621:17:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_to",
                      "scope": 3619,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3616,
                        "name": "ElementaryTypeName",
                        "src": "640:7:6"
                      }
                    ],
                    "id": 3617,
                    "name": "VariableDeclaration",
                    "src": "640:19:6"
                  }
                ],
                "id": 3618,
                "name": "ParameterList",
                "src": "620:40:6"
              }
            ],
            "id": 3619,
            "name": "EventDefinition",
            "src": "605:56:6"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "ExternalTokenTransfer"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_externalToken",
                      "scope": 3627,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3620,
                        "name": "ElementaryTypeName",
                        "src": "694:7:6"
                      }
                    ],
                    "id": 3621,
                    "name": "VariableDeclaration",
                    "src": "694:30:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_to",
                      "scope": 3627,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3622,
                        "name": "ElementaryTypeName",
                        "src": "726:7:6"
                      }
                    ],
                    "id": 3623,
                    "name": "VariableDeclaration",
                    "src": "726:19:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_value",
                      "scope": 3627,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3624,
                        "name": "ElementaryTypeName",
                        "src": "747:4:6"
                      }
                    ],
                    "id": 3625,
                    "name": "VariableDeclaration",
                    "src": "747:11:6"
                  }
                ],
                "id": 3626,
                "name": "ParameterList",
                "src": "693:66:6"
              }
            ],
            "id": 3627,
            "name": "EventDefinition",
            "src": "666:94:6"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "ExternalTokenTransferFrom"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_externalToken",
                      "scope": 3637,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3628,
                        "name": "ElementaryTypeName",
                        "src": "797:7:6"
                      }
                    ],
                    "id": 3629,
                    "name": "VariableDeclaration",
                    "src": "797:30:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_from",
                      "scope": 3637,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3630,
                        "name": "ElementaryTypeName",
                        "src": "829:7:6"
                      }
                    ],
                    "id": 3631,
                    "name": "VariableDeclaration",
                    "src": "829:13:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_to",
                      "scope": 3637,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3632,
                        "name": "ElementaryTypeName",
                        "src": "844:7:6"
                      }
                    ],
                    "id": 3633,
                    "name": "VariableDeclaration",
                    "src": "844:11:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_value",
                      "scope": 3637,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3634,
                        "name": "ElementaryTypeName",
                        "src": "857:4:6"
                      }
                    ],
                    "id": 3635,
                    "name": "VariableDeclaration",
                    "src": "857:11:6"
                  }
                ],
                "id": 3636,
                "name": "ParameterList",
                "src": "796:73:6"
              }
            ],
            "id": 3637,
            "name": "EventDefinition",
            "src": "765:105:6"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "ExternalTokenIncreaseApproval"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_externalToken",
                      "scope": 3645,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 3638,
                        "name": "UserDefinedTypeName",
                        "src": "911:13:6"
                      }
                    ],
                    "id": 3639,
                    "name": "VariableDeclaration",
                    "src": "911:36:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_spender",
                      "scope": 3645,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3640,
                        "name": "ElementaryTypeName",
                        "src": "949:7:6"
                      }
                    ],
                    "id": 3641,
                    "name": "VariableDeclaration",
                    "src": "949:16:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_addedValue",
                      "scope": 3645,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3642,
                        "name": "ElementaryTypeName",
                        "src": "967:4:6"
                      }
                    ],
                    "id": 3643,
                    "name": "VariableDeclaration",
                    "src": "967:16:6"
                  }
                ],
                "id": 3644,
                "name": "ParameterList",
                "src": "910:74:6"
              }
            ],
            "id": 3645,
            "name": "EventDefinition",
            "src": "875:110:6"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "ExternalTokenDecreaseApproval"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_externalToken",
                      "scope": 3653,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 3646,
                        "name": "UserDefinedTypeName",
                        "src": "1026:13:6"
                      }
                    ],
                    "id": 3647,
                    "name": "VariableDeclaration",
                    "src": "1026:36:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_spender",
                      "scope": 3653,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3648,
                        "name": "ElementaryTypeName",
                        "src": "1064:7:6"
                      }
                    ],
                    "id": 3649,
                    "name": "VariableDeclaration",
                    "src": "1064:16:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_subtractedValue",
                      "scope": 3653,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3650,
                        "name": "ElementaryTypeName",
                        "src": "1082:4:6"
                      }
                    ],
                    "id": 3651,
                    "name": "VariableDeclaration",
                    "src": "1082:21:6"
                  }
                ],
                "id": 3652,
                "name": "ParameterList",
                "src": "1025:79:6"
              }
            ],
            "id": 3653,
            "name": "EventDefinition",
            "src": "990:115:6"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "ReceiveEther"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_sender",
                      "scope": 3659,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3654,
                        "name": "ElementaryTypeName",
                        "src": "1129:7:6"
                      }
                    ],
                    "id": 3655,
                    "name": "VariableDeclaration",
                    "src": "1129:23:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_value",
                      "scope": 3659,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3656,
                        "name": "ElementaryTypeName",
                        "src": "1154:4:6"
                      }
                    ],
                    "id": 3657,
                    "name": "VariableDeclaration",
                    "src": "1154:11:6"
                  }
                ],
                "id": 3658,
                "name": "ParameterList",
                "src": "1128:38:6"
              }
            ],
            "id": 3659,
            "name": "EventDefinition",
            "src": "1110:57:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": true,
              "modifiers": [
                null
              ],
              "name": "Avatar",
              "payable": false,
              "scope": 3873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_orgName",
                      "scope": 3681,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 3660,
                        "name": "ElementaryTypeName",
                        "src": "1334:7:6"
                      }
                    ],
                    "id": 3661,
                    "name": "VariableDeclaration",
                    "src": "1334:16:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_nativeToken",
                      "scope": 3681,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract DAOToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DAOToken",
                          "referencedDeclaration": 5207,
                          "type": "contract DAOToken"
                        },
                        "id": 3662,
                        "name": "UserDefinedTypeName",
                        "src": "1352:8:6"
                      }
                    ],
                    "id": 3663,
                    "name": "VariableDeclaration",
                    "src": "1352:21:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_nativeReputation",
                      "scope": 3681,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract Reputation",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Reputation",
                          "referencedDeclaration": 5352,
                          "type": "contract Reputation"
                        },
                        "id": 3664,
                        "name": "UserDefinedTypeName",
                        "src": "1375:10:6"
                      }
                    ],
                    "id": 3665,
                    "name": "VariableDeclaration",
                    "src": "1375:28:6"
                  }
                ],
                "id": 3666,
                "name": "ParameterList",
                "src": "1333:71:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3667,
                "name": "ParameterList",
                "src": "1412:0:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3602,
                              "type": "bytes32",
                              "value": "orgName"
                            },
                            "id": 3668,
                            "name": "Identifier",
                            "src": "1422:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3661,
                              "type": "bytes32",
                              "value": "_orgName"
                            },
                            "id": 3669,
                            "name": "Identifier",
                            "src": "1432:8:6"
                          }
                        ],
                        "id": 3670,
                        "name": "Assignment",
                        "src": "1422:18:6"
                      }
                    ],
                    "id": 3671,
                    "name": "ExpressionStatement",
                    "src": "1422:18:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract DAOToken"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3604,
                              "type": "contract DAOToken",
                              "value": "nativeToken"
                            },
                            "id": 3672,
                            "name": "Identifier",
                            "src": "1450:11:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3663,
                              "type": "contract DAOToken",
                              "value": "_nativeToken"
                            },
                            "id": 3673,
                            "name": "Identifier",
                            "src": "1464:12:6"
                          }
                        ],
                        "id": 3674,
                        "name": "Assignment",
                        "src": "1450:26:6"
                      }
                    ],
                    "id": 3675,
                    "name": "ExpressionStatement",
                    "src": "1450:26:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract Reputation"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3606,
                              "type": "contract Reputation",
                              "value": "nativeReputation"
                            },
                            "id": 3676,
                            "name": "Identifier",
                            "src": "1486:16:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3665,
                              "type": "contract Reputation",
                              "value": "_nativeReputation"
                            },
                            "id": 3677,
                            "name": "Identifier",
                            "src": "1505:17:6"
                          }
                        ],
                        "id": 3678,
                        "name": "Assignment",
                        "src": "1486:36:6"
                      }
                    ],
                    "id": 3679,
                    "name": "ExpressionStatement",
                    "src": "1486:36:6"
                  }
                ],
                "id": 3680,
                "name": "Block",
                "src": "1412:117:6"
              }
            ],
            "id": 3681,
            "name": "FunctionDefinition",
            "src": "1318:211:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "",
              "payable": true,
              "scope": 3873,
              "stateMutability": "payable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3682,
                "name": "ParameterList",
                "src": "1605:2:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3683,
                "name": "ParameterList",
                "src": "1623:0:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3659,
                              "type": "function (address,uint256)",
                              "value": "ReceiveEther"
                            },
                            "id": 3684,
                            "name": "Identifier",
                            "src": "1633:12:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 3685,
                                "name": "Identifier",
                                "src": "1646:3:6"
                              }
                            ],
                            "id": 3686,
                            "name": "MemberAccess",
                            "src": "1646:10:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "value",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12011,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 3687,
                                "name": "Identifier",
                                "src": "1658:3:6"
                              }
                            ],
                            "id": 3688,
                            "name": "MemberAccess",
                            "src": "1658:9:6"
                          }
                        ],
                        "id": 3689,
                        "name": "FunctionCall",
                        "src": "1633:35:6"
                      }
                    ],
                    "id": 3690,
                    "name": "ExpressionStatement",
                    "src": "1633:35:6"
                  }
                ],
                "id": 3691,
                "name": "Block",
                "src": "1623:52:6"
              }
            ],
            "id": 3692,
            "name": "FunctionDefinition",
            "src": "1597:78:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "genericAction",
              "payable": false,
              "scope": 3873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_action",
                      "scope": 3727,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3693,
                        "name": "ElementaryTypeName",
                        "src": "2083:7:6"
                      }
                    ],
                    "id": 3694,
                    "name": "VariableDeclaration",
                    "src": "2083:15:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_params",
                      "scope": 3727,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32[] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "bytes32[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 3695,
                            "name": "ElementaryTypeName",
                            "src": "2100:7:6"
                          }
                        ],
                        "id": 3696,
                        "name": "ArrayTypeName",
                        "src": "2100:9:6"
                      }
                    ],
                    "id": 3697,
                    "name": "VariableDeclaration",
                    "src": "2100:17:6"
                  }
                ],
                "id": 3698,
                "name": "ParameterList",
                "src": "2082:36:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3727,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3701,
                        "name": "ElementaryTypeName",
                        "src": "2148:4:6"
                      }
                    ],
                    "id": 3702,
                    "name": "VariableDeclaration",
                    "src": "2148:4:6"
                  }
                ],
                "id": 3703,
                "name": "ParameterList",
                "src": "2147:6:6"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 11419,
                      "type": "modifier ()",
                      "value": "onlyOwner"
                    },
                    "id": 3699,
                    "name": "Identifier",
                    "src": "2130:9:6"
                  }
                ],
                "id": 3700,
                "name": "ModifierInvocation",
                "src": "2130:9:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3613,
                              "type": "function (address,bytes32[] memory)",
                              "value": "GenericAction"
                            },
                            "id": 3704,
                            "name": "Identifier",
                            "src": "2168:13:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3694,
                              "type": "address",
                              "value": "_action"
                            },
                            "id": 3705,
                            "name": "Identifier",
                            "src": "2182:7:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3697,
                              "type": "bytes32[] memory",
                              "value": "_params"
                            },
                            "id": 3706,
                            "name": "Identifier",
                            "src": "2191:7:6"
                          }
                        ],
                        "id": 3707,
                        "name": "FunctionCall",
                        "src": "2168:31:6"
                      }
                    ],
                    "id": 3708,
                    "name": "ExpressionStatement",
                    "src": "2168:31:6"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3703
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "delegatecall",
                              "referencedDeclaration": null,
                              "type": "function () returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3694,
                                  "type": "address",
                                  "value": "_action"
                                },
                                "id": 3709,
                                "name": "Identifier",
                                "src": "2280:7:6"
                              }
                            ],
                            "id": 3710,
                            "name": "MemberAccess",
                            "src": "2280:20:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes4",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(bytes4)",
                                  "value": "bytes4"
                                },
                                "id": 3711,
                                "name": "ElementaryTypeNameExpression",
                                "src": "2301:6:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_7ff4b6301c72901450252ee5e8584376c615d5c87d4c0b2d9dafc6024e2589a0",
                                          "typeString": "literal_string \"action(bytes32[])\""
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12005,
                                      "type": "function () pure returns (bytes32)",
                                      "value": "keccak256"
                                    },
                                    "id": 3712,
                                    "name": "Identifier",
                                    "src": "2308:9:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "616374696f6e28627974657333325b5d29",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "string",
                                      "type": "literal_string \"action(bytes32[])\"",
                                      "value": "action(bytes32[])"
                                    },
                                    "id": 3713,
                                    "name": "Literal",
                                    "src": "2318:19:6"
                                  }
                                ],
                                "id": 3714,
                                "name": "FunctionCall",
                                "src": "2308:30:6"
                              }
                            ],
                            "id": 3715,
                            "name": "FunctionCall",
                            "src": "2301:38:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)",
                                  "value": "uint256"
                                },
                                "id": 3716,
                                "name": "ElementaryTypeNameExpression",
                                "src": "2349:7:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3332",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 32",
                                  "value": "32"
                                },
                                "id": 3717,
                                "name": "Literal",
                                "src": "2357:2:6"
                              }
                            ],
                            "id": 3718,
                            "name": "FunctionCall",
                            "src": "2349:11:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)",
                                  "value": "uint256"
                                },
                                "id": 3719,
                                "name": "ElementaryTypeNameExpression",
                                "src": "2402:7:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3697,
                                      "type": "bytes32[] memory",
                                      "value": "_params"
                                    },
                                    "id": 3720,
                                    "name": "Identifier",
                                    "src": "2410:7:6"
                                  }
                                ],
                                "id": 3721,
                                "name": "MemberAccess",
                                "src": "2410:14:6"
                              }
                            ],
                            "id": 3722,
                            "name": "FunctionCall",
                            "src": "2402:23:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3697,
                              "type": "bytes32[] memory",
                              "value": "_params"
                            },
                            "id": 3723,
                            "name": "Identifier",
                            "src": "2458:7:6"
                          }
                        ],
                        "id": 3724,
                        "name": "FunctionCall",
                        "src": "2280:186:6"
                      }
                    ],
                    "id": 3725,
                    "name": "Return",
                    "src": "2273:193:6"
                  }
                ],
                "id": 3726,
                "name": "Block",
                "src": "2158:349:6"
              }
            ],
            "id": 3727,
            "name": "FunctionDefinition",
            "src": "2060:447:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "sendEther",
              "payable": false,
              "scope": 3873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_amountInWei",
                      "scope": 3752,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3728,
                        "name": "ElementaryTypeName",
                        "src": "2742:4:6"
                      }
                    ],
                    "id": 3729,
                    "name": "VariableDeclaration",
                    "src": "2742:17:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_to",
                      "scope": 3752,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3730,
                        "name": "ElementaryTypeName",
                        "src": "2761:7:6"
                      }
                    ],
                    "id": 3731,
                    "name": "VariableDeclaration",
                    "src": "2761:11:6"
                  }
                ],
                "id": 3732,
                "name": "ParameterList",
                "src": "2741:32:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3752,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3735,
                        "name": "ElementaryTypeName",
                        "src": "2799:4:6"
                      }
                    ],
                    "id": 3736,
                    "name": "VariableDeclaration",
                    "src": "2799:4:6"
                  }
                ],
                "id": 3737,
                "name": "ParameterList",
                "src": "2798:6:6"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 11419,
                      "type": "modifier ()",
                      "value": "onlyOwner"
                    },
                    "id": 3733,
                    "name": "Identifier",
                    "src": "2781:9:6"
                  }
                ],
                "id": 3734,
                "name": "ModifierInvocation",
                "src": "2781:9:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "transfer",
                              "referencedDeclaration": null,
                              "type": "function (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3731,
                                  "type": "address",
                                  "value": "_to"
                                },
                                "id": 3738,
                                "name": "Identifier",
                                "src": "2815:3:6"
                              }
                            ],
                            "id": 3740,
                            "name": "MemberAccess",
                            "src": "2815:12:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3729,
                              "type": "uint256",
                              "value": "_amountInWei"
                            },
                            "id": 3741,
                            "name": "Identifier",
                            "src": "2828:12:6"
                          }
                        ],
                        "id": 3742,
                        "name": "FunctionCall",
                        "src": "2815:26:6"
                      }
                    ],
                    "id": 3743,
                    "name": "ExpressionStatement",
                    "src": "2815:26:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3619,
                              "type": "function (uint256,address)",
                              "value": "SendEther"
                            },
                            "id": 3744,
                            "name": "Identifier",
                            "src": "2851:9:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3729,
                              "type": "uint256",
                              "value": "_amountInWei"
                            },
                            "id": 3745,
                            "name": "Identifier",
                            "src": "2861:12:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3731,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 3746,
                            "name": "Identifier",
                            "src": "2875:3:6"
                          }
                        ],
                        "id": 3747,
                        "name": "FunctionCall",
                        "src": "2851:28:6"
                      }
                    ],
                    "id": 3748,
                    "name": "ExpressionStatement",
                    "src": "2851:28:6"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3737
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 3749,
                        "name": "Literal",
                        "src": "2896:4:6"
                      }
                    ],
                    "id": 3750,
                    "name": "Return",
                    "src": "2889:11:6"
                  }
                ],
                "id": 3751,
                "name": "Block",
                "src": "2805:102:6"
              }
            ],
            "id": 3752,
            "name": "FunctionDefinition",
            "src": "2723:184:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "externalTokenTransfer",
              "payable": false,
              "scope": 3873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_externalToken",
                      "scope": 3781,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 3753,
                        "name": "UserDefinedTypeName",
                        "src": "3179:13:6"
                      }
                    ],
                    "id": 3754,
                    "name": "VariableDeclaration",
                    "src": "3179:28:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_to",
                      "scope": 3781,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3755,
                        "name": "ElementaryTypeName",
                        "src": "3209:7:6"
                      }
                    ],
                    "id": 3756,
                    "name": "VariableDeclaration",
                    "src": "3209:11:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_value",
                      "scope": 3781,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3757,
                        "name": "ElementaryTypeName",
                        "src": "3222:4:6"
                      }
                    ],
                    "id": 3758,
                    "name": "VariableDeclaration",
                    "src": "3222:11:6"
                  }
                ],
                "id": 3759,
                "name": "ParameterList",
                "src": "3178:56:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3781,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3762,
                        "name": "ElementaryTypeName",
                        "src": "3264:4:6"
                      }
                    ],
                    "id": 3763,
                    "name": "VariableDeclaration",
                    "src": "3264:4:6"
                  }
                ],
                "id": 3764,
                "name": "ParameterList",
                "src": "3263:6:6"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 11419,
                      "type": "modifier ()",
                      "value": "onlyOwner"
                    },
                    "id": 3760,
                    "name": "Identifier",
                    "src": "3246:9:6"
                  }
                ],
                "id": 3761,
                "name": "ModifierInvocation",
                "src": "3246:9:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "transfer",
                              "referencedDeclaration": 11518,
                              "type": "function (address,uint256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3754,
                                  "type": "contract StandardToken",
                                  "value": "_externalToken"
                                },
                                "id": 3765,
                                "name": "Identifier",
                                "src": "3284:14:6"
                              }
                            ],
                            "id": 3767,
                            "name": "MemberAccess",
                            "src": "3284:23:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3756,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 3768,
                            "name": "Identifier",
                            "src": "3308:3:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3758,
                              "type": "uint256",
                              "value": "_value"
                            },
                            "id": 3769,
                            "name": "Identifier",
                            "src": "3313:6:6"
                          }
                        ],
                        "id": 3770,
                        "name": "FunctionCall",
                        "src": "3284:36:6"
                      }
                    ],
                    "id": 3771,
                    "name": "ExpressionStatement",
                    "src": "3284:36:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_StandardToken_$11999",
                                  "typeString": "contract StandardToken"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3627,
                              "type": "function (address,address,uint256)",
                              "value": "ExternalTokenTransfer"
                            },
                            "id": 3772,
                            "name": "Identifier",
                            "src": "3330:21:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3754,
                              "type": "contract StandardToken",
                              "value": "_externalToken"
                            },
                            "id": 3773,
                            "name": "Identifier",
                            "src": "3352:14:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3756,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 3774,
                            "name": "Identifier",
                            "src": "3368:3:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3758,
                              "type": "uint256",
                              "value": "_value"
                            },
                            "id": 3775,
                            "name": "Identifier",
                            "src": "3373:6:6"
                          }
                        ],
                        "id": 3776,
                        "name": "FunctionCall",
                        "src": "3330:50:6"
                      }
                    ],
                    "id": 3777,
                    "name": "ExpressionStatement",
                    "src": "3330:50:6"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3764
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 3778,
                        "name": "Literal",
                        "src": "3397:4:6"
                      }
                    ],
                    "id": 3779,
                    "name": "Return",
                    "src": "3390:11:6"
                  }
                ],
                "id": 3780,
                "name": "Block",
                "src": "3274:134:6"
              }
            ],
            "id": 3781,
            "name": "FunctionDefinition",
            "src": "3148:260:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "externalTokenTransferFrom",
              "payable": false,
              "scope": 3873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_externalToken",
                      "scope": 3814,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 3782,
                        "name": "UserDefinedTypeName",
                        "src": "3768:13:6"
                      }
                    ],
                    "id": 3783,
                    "name": "VariableDeclaration",
                    "src": "3768:28:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_from",
                      "scope": 3814,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3784,
                        "name": "ElementaryTypeName",
                        "src": "3806:7:6"
                      }
                    ],
                    "id": 3785,
                    "name": "VariableDeclaration",
                    "src": "3806:13:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_to",
                      "scope": 3814,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3786,
                        "name": "ElementaryTypeName",
                        "src": "3829:7:6"
                      }
                    ],
                    "id": 3787,
                    "name": "VariableDeclaration",
                    "src": "3829:11:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_value",
                      "scope": 3814,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3788,
                        "name": "ElementaryTypeName",
                        "src": "3850:4:6"
                      }
                    ],
                    "id": 3789,
                    "name": "VariableDeclaration",
                    "src": "3850:11:6"
                  }
                ],
                "id": 3790,
                "name": "ParameterList",
                "src": "3758:109:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3814,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3793,
                        "name": "ElementaryTypeName",
                        "src": "3897:4:6"
                      }
                    ],
                    "id": 3794,
                    "name": "VariableDeclaration",
                    "src": "3897:4:6"
                  }
                ],
                "id": 3795,
                "name": "ParameterList",
                "src": "3896:6:6"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 11419,
                      "type": "modifier ()",
                      "value": "onlyOwner"
                    },
                    "id": 3791,
                    "name": "Identifier",
                    "src": "3879:9:6"
                  }
                ],
                "id": 3792,
                "name": "ModifierInvocation",
                "src": "3879:9:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "transferFrom",
                              "referencedDeclaration": 11853,
                              "type": "function (address,address,uint256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3783,
                                  "type": "contract StandardToken",
                                  "value": "_externalToken"
                                },
                                "id": 3796,
                                "name": "Identifier",
                                "src": "3917:14:6"
                              }
                            ],
                            "id": 3798,
                            "name": "MemberAccess",
                            "src": "3917:27:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3785,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 3799,
                            "name": "Identifier",
                            "src": "3945:5:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3787,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 3800,
                            "name": "Identifier",
                            "src": "3952:3:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3789,
                              "type": "uint256",
                              "value": "_value"
                            },
                            "id": 3801,
                            "name": "Identifier",
                            "src": "3957:6:6"
                          }
                        ],
                        "id": 3802,
                        "name": "FunctionCall",
                        "src": "3917:47:6"
                      }
                    ],
                    "id": 3803,
                    "name": "ExpressionStatement",
                    "src": "3917:47:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_StandardToken_$11999",
                                  "typeString": "contract StandardToken"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3637,
                              "type": "function (address,address,address,uint256)",
                              "value": "ExternalTokenTransferFrom"
                            },
                            "id": 3804,
                            "name": "Identifier",
                            "src": "3974:25:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3783,
                              "type": "contract StandardToken",
                              "value": "_externalToken"
                            },
                            "id": 3805,
                            "name": "Identifier",
                            "src": "4000:14:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3785,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 3806,
                            "name": "Identifier",
                            "src": "4016:5:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3787,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 3807,
                            "name": "Identifier",
                            "src": "4023:3:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3789,
                              "type": "uint256",
                              "value": "_value"
                            },
                            "id": 3808,
                            "name": "Identifier",
                            "src": "4028:6:6"
                          }
                        ],
                        "id": 3809,
                        "name": "FunctionCall",
                        "src": "3974:61:6"
                      }
                    ],
                    "id": 3810,
                    "name": "ExpressionStatement",
                    "src": "3974:61:6"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3795
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 3811,
                        "name": "Literal",
                        "src": "4052:4:6"
                      }
                    ],
                    "id": 3812,
                    "name": "Return",
                    "src": "4045:11:6"
                  }
                ],
                "id": 3813,
                "name": "Block",
                "src": "3907:156:6"
              }
            ],
            "id": 3814,
            "name": "FunctionDefinition",
            "src": "3724:339:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "externalTokenIncreaseApproval",
              "payable": false,
              "scope": 3873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_externalToken",
                      "scope": 3843,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 3815,
                        "name": "UserDefinedTypeName",
                        "src": "4478:13:6"
                      }
                    ],
                    "id": 3816,
                    "name": "VariableDeclaration",
                    "src": "4478:28:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_spender",
                      "scope": 3843,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3817,
                        "name": "ElementaryTypeName",
                        "src": "4508:7:6"
                      }
                    ],
                    "id": 3818,
                    "name": "VariableDeclaration",
                    "src": "4508:16:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_addedValue",
                      "scope": 3843,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3819,
                        "name": "ElementaryTypeName",
                        "src": "4526:4:6"
                      }
                    ],
                    "id": 3820,
                    "name": "VariableDeclaration",
                    "src": "4526:16:6"
                  }
                ],
                "id": 3821,
                "name": "ParameterList",
                "src": "4477:66:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3843,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3824,
                        "name": "ElementaryTypeName",
                        "src": "4573:4:6"
                      }
                    ],
                    "id": 3825,
                    "name": "VariableDeclaration",
                    "src": "4573:4:6"
                  }
                ],
                "id": 3826,
                "name": "ParameterList",
                "src": "4572:6:6"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 11419,
                      "type": "modifier ()",
                      "value": "onlyOwner"
                    },
                    "id": 3822,
                    "name": "Identifier",
                    "src": "4555:9:6"
                  }
                ],
                "id": 3823,
                "name": "ModifierInvocation",
                "src": "4555:9:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "increaseApproval",
                              "referencedDeclaration": 11938,
                              "type": "function (address,uint256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3816,
                                  "type": "contract StandardToken",
                                  "value": "_externalToken"
                                },
                                "id": 3827,
                                "name": "Identifier",
                                "src": "4593:14:6"
                              }
                            ],
                            "id": 3829,
                            "name": "MemberAccess",
                            "src": "4593:31:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3818,
                              "type": "address",
                              "value": "_spender"
                            },
                            "id": 3830,
                            "name": "Identifier",
                            "src": "4625:8:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3820,
                              "type": "uint256",
                              "value": "_addedValue"
                            },
                            "id": 3831,
                            "name": "Identifier",
                            "src": "4635:11:6"
                          }
                        ],
                        "id": 3832,
                        "name": "FunctionCall",
                        "src": "4593:54:6"
                      }
                    ],
                    "id": 3833,
                    "name": "ExpressionStatement",
                    "src": "4593:54:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_StandardToken_$11999",
                                  "typeString": "contract StandardToken"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3645,
                              "type": "function (contract StandardToken,address,uint256)",
                              "value": "ExternalTokenIncreaseApproval"
                            },
                            "id": 3834,
                            "name": "Identifier",
                            "src": "4657:29:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3816,
                              "type": "contract StandardToken",
                              "value": "_externalToken"
                            },
                            "id": 3835,
                            "name": "Identifier",
                            "src": "4687:14:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3818,
                              "type": "address",
                              "value": "_spender"
                            },
                            "id": 3836,
                            "name": "Identifier",
                            "src": "4703:8:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3820,
                              "type": "uint256",
                              "value": "_addedValue"
                            },
                            "id": 3837,
                            "name": "Identifier",
                            "src": "4713:11:6"
                          }
                        ],
                        "id": 3838,
                        "name": "FunctionCall",
                        "src": "4657:68:6"
                      }
                    ],
                    "id": 3839,
                    "name": "ExpressionStatement",
                    "src": "4657:68:6"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3826
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 3840,
                        "name": "Literal",
                        "src": "4742:4:6"
                      }
                    ],
                    "id": 3841,
                    "name": "Return",
                    "src": "4735:11:6"
                  }
                ],
                "id": 3842,
                "name": "Block",
                "src": "4583:170:6"
              }
            ],
            "id": 3843,
            "name": "FunctionDefinition",
            "src": "4439:314:6"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "externalTokenDecreaseApproval",
              "payable": false,
              "scope": 3873,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_externalToken",
                      "scope": 3872,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract StandardToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "StandardToken",
                          "referencedDeclaration": 11999,
                          "type": "contract StandardToken"
                        },
                        "id": 3844,
                        "name": "UserDefinedTypeName",
                        "src": "5173:13:6"
                      }
                    ],
                    "id": 3845,
                    "name": "VariableDeclaration",
                    "src": "5173:28:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_spender",
                      "scope": 3872,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 3846,
                        "name": "ElementaryTypeName",
                        "src": "5203:7:6"
                      }
                    ],
                    "id": 3847,
                    "name": "VariableDeclaration",
                    "src": "5203:16:6"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_subtractedValue",
                      "scope": 3872,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 3848,
                        "name": "ElementaryTypeName",
                        "src": "5221:4:6"
                      }
                    ],
                    "id": 3849,
                    "name": "VariableDeclaration",
                    "src": "5221:21:6"
                  }
                ],
                "id": 3850,
                "name": "ParameterList",
                "src": "5172:72:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3872,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3853,
                        "name": "ElementaryTypeName",
                        "src": "5274:4:6"
                      }
                    ],
                    "id": 3854,
                    "name": "VariableDeclaration",
                    "src": "5274:4:6"
                  }
                ],
                "id": 3855,
                "name": "ParameterList",
                "src": "5273:6:6"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 11419,
                      "type": "modifier ()",
                      "value": "onlyOwner"
                    },
                    "id": 3851,
                    "name": "Identifier",
                    "src": "5256:9:6"
                  }
                ],
                "id": 3852,
                "name": "ModifierInvocation",
                "src": "5256:9:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "decreaseApproval",
                              "referencedDeclaration": 11998,
                              "type": "function (address,uint256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3845,
                                  "type": "contract StandardToken",
                                  "value": "_externalToken"
                                },
                                "id": 3856,
                                "name": "Identifier",
                                "src": "5294:14:6"
                              }
                            ],
                            "id": 3858,
                            "name": "MemberAccess",
                            "src": "5294:31:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3847,
                              "type": "address",
                              "value": "_spender"
                            },
                            "id": 3859,
                            "name": "Identifier",
                            "src": "5326:8:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3849,
                              "type": "uint256",
                              "value": "_subtractedValue"
                            },
                            "id": 3860,
                            "name": "Identifier",
                            "src": "5336:16:6"
                          }
                        ],
                        "id": 3861,
                        "name": "FunctionCall",
                        "src": "5294:59:6"
                      }
                    ],
                    "id": 3862,
                    "name": "ExpressionStatement",
                    "src": "5294:59:6"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_StandardToken_$11999",
                                  "typeString": "contract StandardToken"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3653,
                              "type": "function (contract StandardToken,address,uint256)",
                              "value": "ExternalTokenDecreaseApproval"
                            },
                            "id": 3863,
                            "name": "Identifier",
                            "src": "5363:29:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3845,
                              "type": "contract StandardToken",
                              "value": "_externalToken"
                            },
                            "id": 3864,
                            "name": "Identifier",
                            "src": "5393:14:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3847,
                              "type": "address",
                              "value": "_spender"
                            },
                            "id": 3865,
                            "name": "Identifier",
                            "src": "5408:8:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3849,
                              "type": "uint256",
                              "value": "_subtractedValue"
                            },
                            "id": 3866,
                            "name": "Identifier",
                            "src": "5418:16:6"
                          }
                        ],
                        "id": 3867,
                        "name": "FunctionCall",
                        "src": "5363:72:6"
                      }
                    ],
                    "id": 3868,
                    "name": "ExpressionStatement",
                    "src": "5363:72:6"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3855
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 3869,
                        "name": "Literal",
                        "src": "5452:4:6"
                      }
                    ],
                    "id": 3870,
                    "name": "Return",
                    "src": "5445:11:6"
                  }
                ],
                "id": 3871,
                "name": "Block",
                "src": "5284:179:6"
              }
            ],
            "id": 3872,
            "name": "FunctionDefinition",
            "src": "5134:329:6"
          }
        ],
        "id": 3873,
        "name": "ContractDefinition",
        "src": "401:5065:6"
      }
    ],
    "id": 3874,
    "name": "SourceUnit",
    "src": "0:5467:6"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-02-04T21:57:39.051Z"
}