{
  "contractName": "AragonApp",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "hasInitialized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getEVMScriptExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "token",
          "type": "address"
        }
      ],
      "name": "allowRecoverability",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "transferToVault",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEVMScriptRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isPetrified",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executor",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "script",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "input",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "name": "ScriptResult",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "vault",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RecoverToVault",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        },
        {
          "name": "_params",
          "type": "uint256[]"
        }
      ],
      "name": "canPerform",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRecoveryVault",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"hasInitialized\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_script\",\"type\":\"bytes\"}],\"name\":\"getEVMScriptExecutor\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRecoveryVault\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"token\",\"type\":\"address\"}],\"name\":\"allowRecoverability\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"appId\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getInitializationBlock\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"transferToVault\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_sender\",\"type\":\"address\"},{\"name\":\"_role\",\"type\":\"bytes32\"},{\"name\":\"_params\",\"type\":\"uint256[]\"}],\"name\":\"canPerform\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getEVMScriptRegistry\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"kernel\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isPetrified\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"executor\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"script\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"input\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"ScriptResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"vault\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RecoverToVault\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"allowRecoverability(address)\":{\"details\":\"By default deriving from AragonApp makes it recoverable\",\"params\":{\"token\":\"Token address that would be recovered\"},\"return\":\"bool whether the app allows the recovery\"},\"canPerform(address,bytes32,uint256[])\":{\"details\":\"Check whether an action can be performed by a sender for a particular role on this app\",\"params\":{\"_params\":\"Permission params for the role\",\"_role\":\"Role on this app\",\"_sender\":\"Sender of the call\"},\"return\":\"Boolean indicating whether the sender has the permissions to perform the action.        Always returns false if the app hasn't been initialized yet.\"},\"getInitializationBlock()\":{\"return\":\"Block number in which the contract was initialized\"},\"getRecoveryVault()\":{\"details\":\"Get the recovery vault for the app\",\"return\":\"Recovery vault address for the app\"},\"hasInitialized()\":{\"return\":\"Whether the contract has been initialized by the time of the current block\"},\"transferToVault(address)\":{\"params\":{\"_token\":\"Token balance to be sent to recovery vault.\"}}}},\"userdoc\":{\"methods\":{\"transferToVault(address)\":{\"notice\":\"Send funds to recovery Vault. This contract should never receive funds,        but in case it does, this function allows one to recover them.\"}}}},\"settings\":{\"compilationTarget\":{\"@aragon/os/contracts/apps/AragonApp.sol\":\"AragonApp\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@aragon/os/contracts/acl/ACLSyntaxSugar.sol\":{\"keccak256\":\"0x519915c14576b679b5ed5767d6b21b44a13aa7ae2fe7b33664ca364fafc33e00\",\"urls\":[\"bzzr://8d899afdbf161eaa5e6ce6a68d9ea420c3f98a00a71d70b293e8de8771e6aa62\"]},\"@aragon/os/contracts/acl/IACL.sol\":{\"keccak256\":\"0xe3492bc29d2482e65d2e39c96487b5388f6181f6bcdc6fe6329b8206b84c0cf1\",\"urls\":[\"bzzr://3af0b7e423c7ff4100a3b5868203ec169c866328f2d93d3b6a2111e916cdc411\"]},\"@aragon/os/contracts/apps/AppStorage.sol\":{\"keccak256\":\"0xb1c8eb71d1bdfe1241cc1714b280b46bbfc5bcb1e8499d42c24d3f5f5e8130f1\",\"urls\":[\"bzzr://503beec9e0e19834cb685a1d037eb9caaa412e3709d90bf6e53f51d143d58029\"]},\"@aragon/os/contracts/apps/AragonApp.sol\":{\"keccak256\":\"0xba456000d65bea8d9d82e9f1789086c3777df68fe364f8f397973b6d579f3a2a\",\"urls\":[\"bzzr://85ae9658277830a9454e34e319f8fbcb27d4e015d3bb1219c4d42ec33b9a184e\"]},\"@aragon/os/contracts/common/Autopetrified.sol\":{\"keccak256\":\"0x216e6ecbdcf45d90e8846ab2773072bd82180558a7dcf0c5425ed13b0188c5f3\",\"urls\":[\"bzzr://95b7ec6b2e8d3d8cd8c02f9be8b17d715c48a35445ba194429cca5264bfd0435\"]},\"@aragon/os/contracts/common/ConversionHelpers.sol\":{\"keccak256\":\"0x9872383d458352f5c68fa5afd1fc84ab6b172cbee33359cfa57655b8eda92416\",\"urls\":[\"bzzr://4636d13fecb497561ff5a2c54bb936a0339308bffa4e71a988b8ce00dcc249f3\"]},\"@aragon/os/contracts/common/EtherTokenConstant.sol\":{\"keccak256\":\"0xb18d16ad5127519251d9759349bf0ce1e5cfc861a776c5297b91a625c84d0363\",\"urls\":[\"bzzr://42b57d455cdbf7a8ab1383eb977c55d1826870a488cfc0cbc906a3d0f9ad2328\"]},\"@aragon/os/contracts/common/IVaultRecoverable.sol\":{\"keccak256\":\"0xd7cb66ee5d01be69a6abab04583cc86755bf63c2f1fd03b519a876162f52b323\",\"urls\":[\"bzzr://acb75e2637639bbc83b95032a822a54a588889f203b188e97cd78292cc0ee7f5\"]},\"@aragon/os/contracts/common/Initializable.sol\":{\"keccak256\":\"0xc559fdbee1c0ee18b6f2f866c28ed6eb96859b2c88f75867ca11f25ebd00b090\",\"urls\":[\"bzzr://3d3bca8b35030fc12f94bb52a162be9520868b27ff2cb32f09179d67b6ffdf93\"]},\"@aragon/os/contracts/common/IsContract.sol\":{\"keccak256\":\"0xb76e263e3532883fe32dfe4b1447eb487a570e121c5cce01cee604dd9e44a075\",\"urls\":[\"bzzr://4a7dd7aafff496a2c6403a7e9f4e74562088b5a38e2f6e2670e38dab11b9cd8f\"]},\"@aragon/os/contracts/common/Petrifiable.sol\":{\"keccak256\":\"0xb69f9d6de8ff6f2a084aca2e0228c9008a8776482a70bcab16f46a693ec77be6\",\"urls\":[\"bzzr://ca1d7bb504b8d9d75c162f5edc8588ac86934b69f765f2010d603027dc534375\"]},\"@aragon/os/contracts/common/ReentrancyGuard.sol\":{\"keccak256\":\"0x2b2014de57620aedded6365e742e17b9a23492d754e48dfeefa56f7e5bcf5645\",\"urls\":[\"bzzr://1aa2b79808ccb14b6c2d68f9283bd40300877c749b44edf0f66d78f0c1d17708\"]},\"@aragon/os/contracts/common/SafeERC20.sol\":{\"keccak256\":\"0xd251a1207e1faa4c41500bf927310bb739b1fbc0bf880f236f8e0a9236d6a03a\",\"urls\":[\"bzzr://b2d0f5981950b4e90eaee65c85050ac4f86a79f579f4ef38e6b281c0de980b2b\"]},\"@aragon/os/contracts/common/TimeHelpers.sol\":{\"keccak256\":\"0x95b785dc4319f6ce5255c9adf5e68a469a0f837f7b02e01b6bc974b4921d4024\",\"urls\":[\"bzzr://53f41920d95ed5cb7326de3062063c9296076809377fbadf2cbd26ab0c84ffd1\"]},\"@aragon/os/contracts/common/Uint256Helpers.sol\":{\"keccak256\":\"0x83033025a3f4402be3b7bcc9a23ce96ae4fadc7f251da8f139d73a13a3400b0c\",\"urls\":[\"bzzr://bd0e059eff36a66c3a28298ed5a2e1b058ce93057866ab36063e9f3095cef36f\"]},\"@aragon/os/contracts/common/UnstructuredStorage.sol\":{\"keccak256\":\"0xe0d627fc7a7716409389f34cfe49366ba7871309d3a73262ec9608ef73e47591\",\"urls\":[\"bzzr://9742204494402cdecc66b266f0e420fcfe2677ba710db7651c40f96a63940bef\"]},\"@aragon/os/contracts/common/VaultRecoverable.sol\":{\"keccak256\":\"0x4f4de2c27ea7df731ad7d9babc37965a805282fed16b422f46a35d9d2ef931a1\",\"urls\":[\"bzzr://02d492884e6b1cf7c0869974219c40453d23cf2021cc1deaa6895e0f1b4404b9\"]},\"@aragon/os/contracts/evmscript/EVMScriptRunner.sol\":{\"keccak256\":\"0xcb6b5f7d2610321882cdc86819f1a51341c33b510fff7c60936ac7d7a015d7be\",\"urls\":[\"bzzr://bc430c1487d75909dc059de848123822c257ea9e7c812a7252c10986be253e21\"]},\"@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol\":{\"keccak256\":\"0x9cab64cd2f10148d4e20433ecd11679e69be1fbde112892c48db94f92e48c571\",\"urls\":[\"bzzr://b4bf9f4fc41e6e7791a84d0847410677fc0066ed393872186d90f819f5f22cc0\"]},\"@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol\":{\"keccak256\":\"0x00d98507ec160cb7cc814cc9bdebd01a414353636d6045720fe6d1592277694b\",\"urls\":[\"bzzr://170505211d1846fe24b89cfceea7f5b59a587527f68f89e8f36fed8e08b02db4\"]},\"@aragon/os/contracts/kernel/IKernel.sol\":{\"keccak256\":\"0xd02b98282ccd271b0caa86f2c249986f1619dcf41811f5dadce520b32610b68e\",\"urls\":[\"bzzr://e77000fc50cf4cfb160518af1cfb612e6cbbc06cb4357b1e03ff492fd17d8d2e\"]},\"@aragon/os/contracts/kernel/KernelConstants.sol\":{\"keccak256\":\"0x95e46be2becfb4c8952880909cd32adf5dcfa8c2e0fdf4ae054bbf83ef7f53cd\",\"urls\":[\"bzzr://68d3ce6cda841600d1e5724c0752314a084e4eeebc1fdcb6bc22c92d77c9a3db\"]},\"@aragon/os/contracts/lib/token/ERC20.sol\":{\"keccak256\":\"0xa2e319fde92f9e70912f09bf6e99bbf8b9b798961d54ffcba59d347d37bde1b7\",\"urls\":[\"bzzr://8c9a4aec8e185884f26ffb125975bd52c2363359b9adff481649c59cfe15660f\"]}},\"version\":1}",
  "bytecode": "0x6080604052620000176401000000006200001d810204565b6200023b565b6200003064010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200012360001964010000000062000154810204565b565b60006200014f6000805160206200101b83398151915264010000000062000b046200023382021704565b905090565b6200016764010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000206576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000d0578181015183820152602001620000b6565b50620002306000805160206200101b8339815191528264010000000062000da06200023782021704565b50565b5490565b9055565b610dd0806200024b6000396000f3006080604052600436106100ae5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac081146100b35780632914b9bd146100dc57806332f0a3b51461015e5780637e7db6e11461017357806380afdea8146101a15780638b3dd749146101c85780639d4941d8146101dd578063a1658fad1461020d578063a479e50814610281578063d4aae0c414610296578063de4796ed146102ab575b600080fd5b3480156100bf57600080fd5b506100c86102c0565b604080519115158252519081900360200190f35b3480156100e857600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101359436949293602493928401919081908401838280828437509497506102e99650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561016a57600080fd5b506101356103f5565b34801561017f57600080fd5b506100c873ffffffffffffffffffffffffffffffffffffffff60043516610493565b3480156101ad57600080fd5b506101b6610499565b60408051918252519081900360200190f35b3480156101d457600080fd5b506101b66104c9565b3480156101e957600080fd5b5061020b73ffffffffffffffffffffffffffffffffffffffff600435166104f4565b005b34801561021957600080fd5b5060408051602060046044358181013583810280860185019096528085526100c895833573ffffffffffffffffffffffffffffffffffffffff169560248035963696956064959394920192918291850190849080828437509497506108529650505050505050565b34801561028d57600080fd5b506101356109e2565b3480156102a257600080fd5b50610135610aa4565b3480156102b757600080fd5b506100c8610acf565b6000806102cb6104c9565b905080158015906102e35750806102e0610b00565b10155b91505090565b60006102f36109e2565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561037757818101518382015260200161035f565b50505050905090810190601f1680156103a45780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156103c357600080fd5b505af11580156103d7573d6000803e3d6000fd5b505050506040513d60208110156103ed57600080fd5b505192915050565b60006103ff610aa4565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561046257600080fd5b505af1158015610476573d6000803e3d6000fd5b505050506040513d602081101561048c57600080fd5b5051905090565b50600190565b60006104c47fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b610b04565b905090565b60006104c47febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e610b04565b600080600061050284610493565b60408051808201909152601281527f5245434f5645525f444953414c4c4f574544000000000000000000000000000060208201529015156105db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105a0578181015183820152602001610588565b50505050905090810190601f1680156105cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506105e46103f5565b92506105ef83610b0c565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e5452414354000000000000602082015290151561068c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105a0578181015183820152602001610588565b5073ffffffffffffffffffffffffffffffffffffffff841615156106f7576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f193505050501580156106f1573d6000803e3d6000fd5b506107e7565b508261071f73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff610b4616565b915061074873ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff610c7f16565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c454400000060208201529015156107e5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105a0578181015183820152602001610588565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b60008061085d6102c0565b151561086c57600091506109da565b610874610aa4565b905073ffffffffffffffffffffffffffffffffffffffff8116151561089c57600091506109da565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef91068630876108c488610d17565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b8381101561095c578181015183820152602001610944565b50505050905090810190601f1680156109895780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156109ab57600080fd5b505af11580156109bf573d6000803e3d6000fd5b505050506040513d60208110156109d557600080fd5b505191505b509392505050565b6000806109ed610aa4565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b1580156103c357600080fd5b60006104c47f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b610b04565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610afa6104c9565b14905090565b4390565b5490565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff83161515610b355760009150610b40565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a08231000000000000000000000000000000000000000000000000000000001790526000908180610bd38684610d21565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f52455645525445440000000060208201529193509150821515610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105a0578181015183820152602001610588565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052600090610d0e8582610d52565b95945050505050565b8051602002815290565b6000806000806040516020818751602089018a5afa92506000831115610d4657805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115610d96573d8015610d835760208114610d8c57610d94565b60019350610d94565b600183511493505b505b5090949350505050565b90555600a165627a7a723058206112fff0dee4b5de8214052207cbe8210f7f498d85aef634e3146f0e0c3c76cd0029ebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e",
  "deployedBytecode": "0x6080604052600436106100ae5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac081146100b35780632914b9bd146100dc57806332f0a3b51461015e5780637e7db6e11461017357806380afdea8146101a15780638b3dd749146101c85780639d4941d8146101dd578063a1658fad1461020d578063a479e50814610281578063d4aae0c414610296578063de4796ed146102ab575b600080fd5b3480156100bf57600080fd5b506100c86102c0565b604080519115158252519081900360200190f35b3480156100e857600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101359436949293602493928401919081908401838280828437509497506102e99650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561016a57600080fd5b506101356103f5565b34801561017f57600080fd5b506100c873ffffffffffffffffffffffffffffffffffffffff60043516610493565b3480156101ad57600080fd5b506101b6610499565b60408051918252519081900360200190f35b3480156101d457600080fd5b506101b66104c9565b3480156101e957600080fd5b5061020b73ffffffffffffffffffffffffffffffffffffffff600435166104f4565b005b34801561021957600080fd5b5060408051602060046044358181013583810280860185019096528085526100c895833573ffffffffffffffffffffffffffffffffffffffff169560248035963696956064959394920192918291850190849080828437509497506108529650505050505050565b34801561028d57600080fd5b506101356109e2565b3480156102a257600080fd5b50610135610aa4565b3480156102b757600080fd5b506100c8610acf565b6000806102cb6104c9565b905080158015906102e35750806102e0610b00565b10155b91505090565b60006102f36109e2565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561037757818101518382015260200161035f565b50505050905090810190601f1680156103a45780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156103c357600080fd5b505af11580156103d7573d6000803e3d6000fd5b505050506040513d60208110156103ed57600080fd5b505192915050565b60006103ff610aa4565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561046257600080fd5b505af1158015610476573d6000803e3d6000fd5b505050506040513d602081101561048c57600080fd5b5051905090565b50600190565b60006104c47fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b610b04565b905090565b60006104c47febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e610b04565b600080600061050284610493565b60408051808201909152601281527f5245434f5645525f444953414c4c4f574544000000000000000000000000000060208201529015156105db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105a0578181015183820152602001610588565b50505050905090810190601f1680156105cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506105e46103f5565b92506105ef83610b0c565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e5452414354000000000000602082015290151561068c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105a0578181015183820152602001610588565b5073ffffffffffffffffffffffffffffffffffffffff841615156106f7576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f193505050501580156106f1573d6000803e3d6000fd5b506107e7565b508261071f73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff610b4616565b915061074873ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff610c7f16565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c454400000060208201529015156107e5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105a0578181015183820152602001610588565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b60008061085d6102c0565b151561086c57600091506109da565b610874610aa4565b905073ffffffffffffffffffffffffffffffffffffffff8116151561089c57600091506109da565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef91068630876108c488610d17565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b8381101561095c578181015183820152602001610944565b50505050905090810190601f1680156109895780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156109ab57600080fd5b505af11580156109bf573d6000803e3d6000fd5b505050506040513d60208110156109d557600080fd5b505191505b509392505050565b6000806109ed610aa4565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b1580156103c357600080fd5b60006104c47f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b610b04565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610afa6104c9565b14905090565b4390565b5490565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff83161515610b355760009150610b40565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a08231000000000000000000000000000000000000000000000000000000001790526000908180610bd38684610d21565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f52455645525445440000000060208201529193509150821515610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105a0578181015183820152602001610588565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052600090610d0e8582610d52565b95945050505050565b8051602002815290565b6000806000806040516020818751602089018a5afa92506000831115610d4657805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115610d96573d8015610d835760208114610d8c57610d94565b60019350610d94565b600183511493505b505b5090949350505050565b90555600a165627a7a723058206112fff0dee4b5de8214052207cbe8210f7f498d85aef634e3146f0e0c3c76cd0029",
  "sourceMap": "753:1731:21:-;;;344:9:22;:7;;;;:9;:::i;:::-;753:1731:21;;590:84:32;615:24:30;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;607:65:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;637:30:32;-1:-1:-1;;637:13:32;;;;:30;:::i;:::-;590:84::o;881:137:30:-;936:7;962:49;-1:-1:-1;;;;;;;;;;;962:47:30;;;;;;:49;:::i;:::-;955:56;;881:137;:::o;1751:141::-;615:24;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:30;-1:-1:-1;1824:61:30;-1:-1:-1;;;;;;;;;;;1872:12:30;1824:47;;;;;;:61;:::i;:::-;1751:141;:::o;519:134:37:-;630:15;;620:27::o;1028:119::-;1117:22;;1115:26::o;753:1731:21:-;;;;;;;",
  "deployedSourceMap": "753:1731:21:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1128:208:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1128:208:30;;;;;;;;;;;;;;;;;;;;;;795:179:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;795:179:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;795:179:40;;-1:-1:-1;795:179:40;;-1:-1:-1;;;;;;;795:179:40;;;;;;;;;;;;;;;;;;;;2253:229:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2253:229:21;;;;1659:99:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1659:99:38;;;;;;;796:106:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;796:106:20;;;;;;;;;;;;;;;;;;;;881:137:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;881:137:30;;;;836:623:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;836:623:38;;;;;;;;;1641:496:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1641:496:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1641:496:21;;-1:-1:-1;1641:496:21;;-1:-1:-1;;;;;;;1641:496:21;980:231:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;980:231:40;;;;674:116:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;674:116:20;;;;287:117:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:117:32;;;;1128:208:30;1175:4;1191:27;1221:24;:22;:24::i;:::-;1191:54;-1:-1:-1;1262:24:30;;;;;:67;;;1310:19;1290:16;:14;:16::i;:::-;:39;;1262:67;1255:74;;1128:208;;:::o;795:179:40:-;861:18;917:22;:20;:22::i;:::-;:40;;;958:7;917:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;917:49:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;917:49:40;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;917:49:40;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;917:49:40;;795:179;-1:-1:-1;;795:179:40:o;2253:229:21:-;2302:7;2408:8;:6;:8::i;:::-;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2408:27:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2408:27:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2408:27:21;;-1:-1:-1;2253:229:21;:::o;1659:99:38:-;-1:-1:-1;1747:4:38;;1659:99::o;796:106:20:-;834:7;860:35;601:66;860:33;:35::i;:::-;853:42;;796:106;:::o;881:137:30:-;936:7;962:49;345:66;962:47;:49::i;836:623:38:-;960:13;1067:15;1224:11;904:27;924:6;904:19;:27::i;:::-;933:16;;;;;;;;;;;;;;;;;;896:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;896:54:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;976:18;:16;:18::i;:::-;960:34;;1012:17;1023:5;1012:10;:17::i;:::-;1031:24;;;;;;;;;;;;;;;;;;1004:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1004:52:38;-1:-1:-1;1096:13:38;;;;1092:307;;;1170:23;;1143:4;1135:21;;-1:-1:-1;1135:21:38;1170:14;;;:23;;;;;1135:21;;1170:23;;;;1135:21;1170:14;:23;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1170:23:38;1092:307;;;-1:-1:-1;1244:6:38;1275:27;:21;;;1297:4;1275:27;:21;:27;:::i;:::-;1265:37;-1:-1:-1;1324:34:38;:18;;;1343:5;1265:37;1324:34;:18;:34;:::i;:::-;1360:27;;;;;;;;;;;;;;;;;;1316:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1316:72:38;;1092:307;1436:6;1414:38;;1429:5;1414:38;;;1444:7;1414:38;;;;;;;;;;;;;;;;;;836:623;;;;:::o;1641:496:21:-;1733:4;1819:20;1754:16;:14;:16::i;:::-;1753:17;1749:60;;;1793:5;1786:12;;;;1749:60;1842:8;:6;:8::i;:::-;1819:31;-1:-1:-1;1864:35:21;;;;1860:78;;;1922:5;1915:12;;;;1860:78;1955:12;:26;;;1995:7;2024:4;2043:5;2062:58;2112:7;2062:49;:58::i;:::-;1955:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1955:175:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1955:175:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1955:175:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1955:175:21;;-1:-1:-1;1641:496:21;;;;;;;:::o;980:231:40:-;1033:18;1063:20;1086:8;:6;:8::i;:::-;:69;;;;;;1368:66:51;1086:69:40;;;;330:66:42;1086:69:40;;;;;;:15;;;;;;;;:69;;;;;;;;;;;;;;;;:15;:69;;;5:2:-1;;;;30:1;27;20:12;674:116:20;713:7;747:35;485:66;747:33;:35::i;287:117:32:-;331:4;277:2;354:24;:22;:24::i;:::-;:43;347:50;;287:117;:::o;347:94:35:-;422:12;347:94;:::o;379:134:37:-;490:15;;480:27::o;519:134::-;630:15;;620:27::o;426:244:31:-;486:4;;506:21;;;;502:64;;;550:5;543:12;;;;502:64;629:7;617:20;609:28;;662:1;655:4;:8;648:15;;426:244;;;;;:::o;4578:403:34:-;4708:91;;;4744:16;4708:91;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4708:91:34;;;;;;;;25:18:-1;;61:17;;4708:91:34;182:15:-1;4744:25:34;179:29:-1;160:49;;4656:7:34;;;;4849:39;4744:6;4708:91;4849:12;:39::i;:::-;4915:28;;;;;;;;;;;;;;;;;4810:78;;-1:-1:-1;4810:78:34;-1:-1:-1;4898:46:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4898:46:34;-1:-1:-1;4962:12:34;4578:403;-1:-1:-1;;;;;4578:403:34:o;3100:304::-;3232:101;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3232:101:34;;;;;;;;25:18:-1;;61:17;;3232:101:34;182:15:-1;3268:17:34;179:29:-1;160:49;;3184:4:34;;3350:47;3372:6;3232:101;3350:21;:47::i;:::-;3343:54;3100:304;-1:-1:-1;;;;;3100:304:34:o;142:539:23:-;559:13;;575:2;559:18;639:26;;559:6;596:79::o;2148:774:34:-;2255:4;2261:7;2284:12;2306:11;2367:4;2361:11;2741:4;2670:3;2619:9;2613:16;2572:4;2561:9;2557:20;2508:5;2451:3;2423:371;2412:382;;2823:1;2814:7;2811:14;2808:2;;;2857:3;2851:10;2844:17;;2808:2;-1:-1:-1;2902:7:34;;2911:3;;-1:-1:-1;2148:774:34;-1:-1:-1;;;2148:774:34:o;800:1342::-;903:4;923:8;981:4;975:11;1403:4;1332:3;1281:9;1275:16;1234:4;1223:9;1219:20;1169:1;1120:5;1063:3;1041:415;1485:1;1476:7;1473:14;1470:2;;;1587:14;1672:55;;;;1806:4;1801:193;;;;1580:512;;1672:55;1708:1;1701:8;;1672:55;;1801:193;1974:1;1968:3;1962:10;1959:17;1952:24;;1580:512;;1470:2;-1:-1:-1;2132:3:34;;800:1342;-1:-1:-1;;;;800:1342:34:o;1028:119:37:-;1117:22;;1115:26::o",
  "source": "/*\n * SPDX-License-Identitifer:    MIT\n */\n\npragma solidity ^0.4.24;\n\nimport \"./AppStorage.sol\";\nimport \"../acl/ACLSyntaxSugar.sol\";\nimport \"../common/Autopetrified.sol\";\nimport \"../common/ConversionHelpers.sol\";\nimport \"../common/ReentrancyGuard.sol\";\nimport \"../common/VaultRecoverable.sol\";\nimport \"../evmscript/EVMScriptRunner.sol\";\n\n\n// Contracts inheriting from AragonApp are, by default, immediately petrified upon deployment so\n// that they can never be initialized.\n// Unless overriden, this behaviour enforces those contracts to be usable only behind an AppProxy.\n// ReentrancyGuard, EVMScriptRunner, and ACLSyntaxSugar are not directly used by this contract, but\n// are included so that they are automatically usable by subclassing contracts\ncontract AragonApp is AppStorage, Autopetrified, VaultRecoverable, ReentrancyGuard, EVMScriptRunner, ACLSyntaxSugar {\n    string private constant ERROR_AUTH_FAILED = \"APP_AUTH_FAILED\";\n\n    modifier auth(bytes32 _role) {\n        require(canPerform(msg.sender, _role, new uint256[](0)), ERROR_AUTH_FAILED);\n        _;\n    }\n\n    modifier authP(bytes32 _role, uint256[] _params) {\n        require(canPerform(msg.sender, _role, _params), ERROR_AUTH_FAILED);\n        _;\n    }\n\n    /**\n    * @dev Check whether an action can be performed by a sender for a particular role on this app\n    * @param _sender Sender of the call\n    * @param _role Role on this app\n    * @param _params Permission params for the role\n    * @return Boolean indicating whether the sender has the permissions to perform the action.\n    *         Always returns false if the app hasn't been initialized yet.\n    */\n    function canPerform(address _sender, bytes32 _role, uint256[] _params) public view returns (bool) {\n        if (!hasInitialized()) {\n            return false;\n        }\n\n        IKernel linkedKernel = kernel();\n        if (address(linkedKernel) == address(0)) {\n            return false;\n        }\n\n        return linkedKernel.hasPermission(\n            _sender,\n            address(this),\n            _role,\n            ConversionHelpers.dangerouslyCastUintArrayToBytes(_params)\n        );\n    }\n\n    /**\n    * @dev Get the recovery vault for the app\n    * @return Recovery vault address for the app\n    */\n    function getRecoveryVault() public view returns (address) {\n        // Funds recovery via a vault is only available when used with a kernel\n        return kernel().getRecoveryVault(); // if kernel is not set, it will revert\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/apps/AragonApp.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
    "exportedSymbols": {
      "AragonApp": [
        6120
      ]
    },
    "id": 6121,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5998,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:21"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AppStorage.sol",
        "file": "./AppStorage.sol",
        "id": 5999,
        "nodeType": "ImportDirective",
        "scope": 6121,
        "sourceUnit": 5997,
        "src": "70:26:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACLSyntaxSugar.sol",
        "file": "../acl/ACLSyntaxSugar.sol",
        "id": 6000,
        "nodeType": "ImportDirective",
        "scope": 6121,
        "sourceUnit": 5284,
        "src": "97:35:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Autopetrified.sol",
        "file": "../common/Autopetrified.sol",
        "id": 6001,
        "nodeType": "ImportDirective",
        "scope": 6121,
        "sourceUnit": 6134,
        "src": "133:37:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/ConversionHelpers.sol",
        "file": "../common/ConversionHelpers.sol",
        "id": 6002,
        "nodeType": "ImportDirective",
        "scope": 6121,
        "sourceUnit": 6184,
        "src": "171:41:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/ReentrancyGuard.sol",
        "file": "../common/ReentrancyGuard.sol",
        "id": 6003,
        "nodeType": "ImportDirective",
        "scope": 6121,
        "sourceUnit": 6540,
        "src": "213:39:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/VaultRecoverable.sol",
        "file": "../common/VaultRecoverable.sol",
        "id": 6004,
        "nodeType": "ImportDirective",
        "scope": 6121,
        "sourceUnit": 7054,
        "src": "253:40:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/EVMScriptRunner.sol",
        "file": "../evmscript/EVMScriptRunner.sol",
        "id": 6005,
        "nodeType": "ImportDirective",
        "scope": 6121,
        "sourceUnit": 7455,
        "src": "294:42:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6006,
              "name": "AppStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5996,
              "src": "775:10:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AppStorage_$5996",
                "typeString": "contract AppStorage"
              }
            },
            "id": 6007,
            "nodeType": "InheritanceSpecifier",
            "src": "775:10:21"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6008,
              "name": "Autopetrified",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6133,
              "src": "787:13:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Autopetrified_$6133",
                "typeString": "contract Autopetrified"
              }
            },
            "id": 6009,
            "nodeType": "InheritanceSpecifier",
            "src": "787:13:21"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6010,
              "name": "VaultRecoverable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7053,
              "src": "802:16:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_VaultRecoverable_$7053",
                "typeString": "contract VaultRecoverable"
              }
            },
            "id": 6011,
            "nodeType": "InheritanceSpecifier",
            "src": "802:16:21"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6012,
              "name": "ReentrancyGuard",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6539,
              "src": "820:15:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ReentrancyGuard_$6539",
                "typeString": "contract ReentrancyGuard"
              }
            },
            "id": 6013,
            "nodeType": "InheritanceSpecifier",
            "src": "820:15:21"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6014,
              "name": "EVMScriptRunner",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7454,
              "src": "837:15:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRunner_$7454",
                "typeString": "contract EVMScriptRunner"
              }
            },
            "id": 6015,
            "nodeType": "InheritanceSpecifier",
            "src": "837:15:21"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6016,
              "name": "ACLSyntaxSugar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5208,
              "src": "854:14:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ACLSyntaxSugar_$5208",
                "typeString": "contract ACLSyntaxSugar"
              }
            },
            "id": 6017,
            "nodeType": "InheritanceSpecifier",
            "src": "854:14:21"
          }
        ],
        "contractDependencies": [
          5208,
          5996,
          6133,
          6293,
          6343,
          6441,
          6469,
          6502,
          6539,
          6831,
          7053,
          7454,
          7481,
          8745
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 6120,
        "linearizedBaseContracts": [
          6120,
          5208,
          7454,
          8745,
          7481,
          6539,
          7053,
          6469,
          6293,
          6343,
          6133,
          6502,
          6441,
          6831,
          5996
        ],
        "name": "AragonApp",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 6020,
            "name": "ERROR_AUTH_FAILED",
            "nodeType": "VariableDeclaration",
            "scope": 6120,
            "src": "875:61:21",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6018,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "875:6:21",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4150505f415554485f4641494c4544",
              "id": 6019,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "919:17:21",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_7c647f89bc482fba966a87f2618f3643e7330fe1a975a9e059dd461fd318ea46",
                "typeString": "literal_string \"APP_AUTH_FAILED\""
              },
              "value": "APP_AUTH_FAILED"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 6039,
              "nodeType": "Block",
              "src": "972:103:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6026,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10404,
                              "src": "1001:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1001:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6028,
                            "name": "_role",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6022,
                            "src": "1013:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6032,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1034:1:21",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 6031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1020:13:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                                "typeString": "function (uint256) pure returns (uint256[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 6029,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1024:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 6030,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "1024:9:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                  "typeString": "uint256[]"
                                }
                              }
                            },
                            "id": 6033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1020:16:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 6025,
                          "name": "canPerform",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6108,
                          "src": "990:10:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32,uint256[] memory) view returns (bool)"
                          }
                        },
                        "id": 6034,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "990:47:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6035,
                        "name": "ERROR_AUTH_FAILED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6020,
                        "src": "1039:17:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 6024,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "982:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "982:75:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6037,
                  "nodeType": "ExpressionStatement",
                  "src": "982:75:21"
                },
                {
                  "id": 6038,
                  "nodeType": "PlaceholderStatement",
                  "src": "1067:1:21"
                }
              ]
            },
            "documentation": null,
            "id": 6040,
            "name": "auth",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 6023,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6022,
                  "name": "_role",
                  "nodeType": "VariableDeclaration",
                  "scope": 6040,
                  "src": "957:13:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6021,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "957:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "956:15:21"
            },
            "src": "943:132:21",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6058,
              "nodeType": "Block",
              "src": "1130:94:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6049,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10404,
                              "src": "1159:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6050,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1159:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6051,
                            "name": "_role",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6042,
                            "src": "1171:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6052,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6045,
                            "src": "1178:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 6048,
                          "name": "canPerform",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6108,
                          "src": "1148:10:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32,uint256[] memory) view returns (bool)"
                          }
                        },
                        "id": 6053,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1148:38:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6054,
                        "name": "ERROR_AUTH_FAILED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6020,
                        "src": "1188:17:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 6047,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "1140:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1140:66:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6056,
                  "nodeType": "ExpressionStatement",
                  "src": "1140:66:21"
                },
                {
                  "id": 6057,
                  "nodeType": "PlaceholderStatement",
                  "src": "1216:1:21"
                }
              ]
            },
            "documentation": null,
            "id": 6059,
            "name": "authP",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 6046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6042,
                  "name": "_role",
                  "nodeType": "VariableDeclaration",
                  "scope": 6059,
                  "src": "1096:13:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6041,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1096:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6045,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 6059,
                  "src": "1111:17:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6043,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1111:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6044,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1111:9:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1095:34:21"
            },
            "src": "1081:143:21",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6107,
              "nodeType": "Block",
              "src": "1739:398:21",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 6073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "1753:17:21",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 6071,
                        "name": "hasInitialized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6413,
                        "src": "1754:14:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                          "typeString": "function () view returns (bool)"
                        }
                      },
                      "id": 6072,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1754:16:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6077,
                  "nodeType": "IfStatement",
                  "src": "1749:60:21",
                  "trueBody": {
                    "id": 6076,
                    "nodeType": "Block",
                    "src": "1772:37:21",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 6074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1793:5:21",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 6070,
                        "id": 6075,
                        "nodeType": "Return",
                        "src": "1786:12:21"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    6079
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6079,
                      "name": "linkedKernel",
                      "nodeType": "VariableDeclaration",
                      "scope": 6108,
                      "src": "1819:20:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IKernel_$8231",
                        "typeString": "contract IKernel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6078,
                        "name": "IKernel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8231,
                        "src": "1819:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$8231",
                          "typeString": "contract IKernel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6082,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 6080,
                      "name": "kernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5959,
                      "src": "1842:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$8231_$",
                        "typeString": "function () view returns (contract IKernel)"
                      }
                    },
                    "id": 6081,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1842:8:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IKernel_$8231",
                      "typeString": "contract IKernel"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1819:31:21"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 6089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 6084,
                          "name": "linkedKernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6079,
                          "src": "1872:12:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IKernel_$8231",
                            "typeString": "contract IKernel"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IKernel_$8231",
                            "typeString": "contract IKernel"
                          }
                        ],
                        "id": 6083,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1864:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 6085,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1864:21:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1897:1:21",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 6086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1889:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 6088,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1889:10:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1864:35:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6093,
                  "nodeType": "IfStatement",
                  "src": "1860:78:21",
                  "trueBody": {
                    "id": 6092,
                    "nodeType": "Block",
                    "src": "1901:37:21",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 6090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1922:5:21",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 6070,
                        "id": 6091,
                        "nodeType": "Return",
                        "src": "1915:12:21"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6096,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6061,
                        "src": "1995:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6098,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10469,
                            "src": "2024:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AragonApp_$6120",
                              "typeString": "contract AragonApp"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AragonApp_$6120",
                              "typeString": "contract AragonApp"
                            }
                          ],
                          "id": 6097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2016:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 6099,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2016:13:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6100,
                        "name": "_role",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6063,
                        "src": "2043:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6103,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6066,
                            "src": "2112:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 6101,
                            "name": "ConversionHelpers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6183,
                            "src": "2062:17:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ConversionHelpers_$6183_$",
                              "typeString": "type(library ConversionHelpers)"
                            }
                          },
                          "id": 6102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "dangerouslyCastUintArrayToBytes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6155,
                          "src": "2062:49:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (uint256[] memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 6104,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2062:58:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 6094,
                        "name": "linkedKernel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6079,
                        "src": "1955:12:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$8231",
                          "typeString": "contract IKernel"
                        }
                      },
                      "id": 6095,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "hasPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8212,
                      "src": "1955:26:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (address,address,bytes32,bytes memory) view external returns (bool)"
                      }
                    },
                    "id": 6105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1955:175:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 6070,
                  "id": 6106,
                  "nodeType": "Return",
                  "src": "1948:182:21"
                }
              ]
            },
            "documentation": "@dev Check whether an action can be performed by a sender for a particular role on this app\n@param _sender Sender of the call\n@param _role Role on this app\n@param _params Permission params for the role\n@return Boolean indicating whether the sender has the permissions to perform the action.\n        Always returns false if the app hasn't been initialized yet.",
            "id": 6108,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "canPerform",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6067,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6061,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 6108,
                  "src": "1661:15:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6060,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1661:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6063,
                  "name": "_role",
                  "nodeType": "VariableDeclaration",
                  "scope": 6108,
                  "src": "1678:13:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6062,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1678:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6066,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 6108,
                  "src": "1693:17:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6064,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1693:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6065,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1693:9:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1660:51:21"
            },
            "payable": false,
            "returnParameters": {
              "id": 6070,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6069,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 6108,
                  "src": "1733:4:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6068,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1733:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1732:6:21"
            },
            "scope": 6120,
            "src": "1641:496:21",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6118,
              "nodeType": "Block",
              "src": "2311:171:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6113,
                          "name": "kernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5959,
                          "src": "2408:6:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$8231_$",
                            "typeString": "function () view returns (contract IKernel)"
                          }
                        },
                        "id": 6114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2408:8:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$8231",
                          "typeString": "contract IKernel"
                        }
                      },
                      "id": 6115,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getRecoveryVault",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6342,
                      "src": "2408:25:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 6116,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2408:27:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 6112,
                  "id": 6117,
                  "nodeType": "Return",
                  "src": "2401:34:21"
                }
              ]
            },
            "documentation": "@dev Get the recovery vault for the app\n@return Recovery vault address for the app",
            "id": 6119,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getRecoveryVault",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6109,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2278:2:21"
            },
            "payable": false,
            "returnParameters": {
              "id": 6112,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6111,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 6119,
                  "src": "2302:7:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6110,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2302:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2301:9:21"
            },
            "scope": 6120,
            "src": "2253:229:21",
            "stateMutability": "view",
            "superFunction": 7052,
            "visibility": "public"
          }
        ],
        "scope": 6121,
        "src": "753:1731:21"
      }
    ],
    "src": "44:2441:21"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
    "exportedSymbols": {
      "AragonApp": [
        6120
      ]
    },
    "id": 6121,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5998,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:21"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AppStorage.sol",
        "file": "./AppStorage.sol",
        "id": 5999,
        "nodeType": "ImportDirective",
        "scope": 6121,
        "sourceUnit": 5997,
        "src": "70:26:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/acl/ACLSyntaxSugar.sol",
        "file": "../acl/ACLSyntaxSugar.sol",
        "id": 6000,
        "nodeType": "ImportDirective",
        "scope": 6121,
        "sourceUnit": 5284,
        "src": "97:35:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Autopetrified.sol",
        "file": "../common/Autopetrified.sol",
        "id": 6001,
        "nodeType": "ImportDirective",
        "scope": 6121,
        "sourceUnit": 6134,
        "src": "133:37:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/ConversionHelpers.sol",
        "file": "../common/ConversionHelpers.sol",
        "id": 6002,
        "nodeType": "ImportDirective",
        "scope": 6121,
        "sourceUnit": 6184,
        "src": "171:41:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/ReentrancyGuard.sol",
        "file": "../common/ReentrancyGuard.sol",
        "id": 6003,
        "nodeType": "ImportDirective",
        "scope": 6121,
        "sourceUnit": 6540,
        "src": "213:39:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/VaultRecoverable.sol",
        "file": "../common/VaultRecoverable.sol",
        "id": 6004,
        "nodeType": "ImportDirective",
        "scope": 6121,
        "sourceUnit": 7054,
        "src": "253:40:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/EVMScriptRunner.sol",
        "file": "../evmscript/EVMScriptRunner.sol",
        "id": 6005,
        "nodeType": "ImportDirective",
        "scope": 6121,
        "sourceUnit": 7455,
        "src": "294:42:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6006,
              "name": "AppStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5996,
              "src": "775:10:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AppStorage_$5996",
                "typeString": "contract AppStorage"
              }
            },
            "id": 6007,
            "nodeType": "InheritanceSpecifier",
            "src": "775:10:21"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6008,
              "name": "Autopetrified",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6133,
              "src": "787:13:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Autopetrified_$6133",
                "typeString": "contract Autopetrified"
              }
            },
            "id": 6009,
            "nodeType": "InheritanceSpecifier",
            "src": "787:13:21"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6010,
              "name": "VaultRecoverable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7053,
              "src": "802:16:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_VaultRecoverable_$7053",
                "typeString": "contract VaultRecoverable"
              }
            },
            "id": 6011,
            "nodeType": "InheritanceSpecifier",
            "src": "802:16:21"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6012,
              "name": "ReentrancyGuard",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6539,
              "src": "820:15:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ReentrancyGuard_$6539",
                "typeString": "contract ReentrancyGuard"
              }
            },
            "id": 6013,
            "nodeType": "InheritanceSpecifier",
            "src": "820:15:21"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6014,
              "name": "EVMScriptRunner",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7454,
              "src": "837:15:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRunner_$7454",
                "typeString": "contract EVMScriptRunner"
              }
            },
            "id": 6015,
            "nodeType": "InheritanceSpecifier",
            "src": "837:15:21"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6016,
              "name": "ACLSyntaxSugar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5208,
              "src": "854:14:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ACLSyntaxSugar_$5208",
                "typeString": "contract ACLSyntaxSugar"
              }
            },
            "id": 6017,
            "nodeType": "InheritanceSpecifier",
            "src": "854:14:21"
          }
        ],
        "contractDependencies": [
          5208,
          5996,
          6133,
          6293,
          6343,
          6441,
          6469,
          6502,
          6539,
          6831,
          7053,
          7454,
          7481,
          8745
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 6120,
        "linearizedBaseContracts": [
          6120,
          5208,
          7454,
          8745,
          7481,
          6539,
          7053,
          6469,
          6293,
          6343,
          6133,
          6502,
          6441,
          6831,
          5996
        ],
        "name": "AragonApp",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 6020,
            "name": "ERROR_AUTH_FAILED",
            "nodeType": "VariableDeclaration",
            "scope": 6120,
            "src": "875:61:21",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 6018,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "875:6:21",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4150505f415554485f4641494c4544",
              "id": 6019,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "919:17:21",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_7c647f89bc482fba966a87f2618f3643e7330fe1a975a9e059dd461fd318ea46",
                "typeString": "literal_string \"APP_AUTH_FAILED\""
              },
              "value": "APP_AUTH_FAILED"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 6039,
              "nodeType": "Block",
              "src": "972:103:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6026,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10404,
                              "src": "1001:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1001:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6028,
                            "name": "_role",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6022,
                            "src": "1013:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6032,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1034:1:21",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 6031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1020:13:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                                "typeString": "function (uint256) pure returns (uint256[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 6029,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1024:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 6030,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "1024:9:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                  "typeString": "uint256[]"
                                }
                              }
                            },
                            "id": 6033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1020:16:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 6025,
                          "name": "canPerform",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6108,
                          "src": "990:10:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32,uint256[] memory) view returns (bool)"
                          }
                        },
                        "id": 6034,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "990:47:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6035,
                        "name": "ERROR_AUTH_FAILED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6020,
                        "src": "1039:17:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 6024,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "982:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "982:75:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6037,
                  "nodeType": "ExpressionStatement",
                  "src": "982:75:21"
                },
                {
                  "id": 6038,
                  "nodeType": "PlaceholderStatement",
                  "src": "1067:1:21"
                }
              ]
            },
            "documentation": null,
            "id": 6040,
            "name": "auth",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 6023,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6022,
                  "name": "_role",
                  "nodeType": "VariableDeclaration",
                  "scope": 6040,
                  "src": "957:13:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6021,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "957:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "956:15:21"
            },
            "src": "943:132:21",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6058,
              "nodeType": "Block",
              "src": "1130:94:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6049,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10404,
                              "src": "1159:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6050,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1159:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6051,
                            "name": "_role",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6042,
                            "src": "1171:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6052,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6045,
                            "src": "1178:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 6048,
                          "name": "canPerform",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6108,
                          "src": "1148:10:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32,uint256[] memory) view returns (bool)"
                          }
                        },
                        "id": 6053,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1148:38:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6054,
                        "name": "ERROR_AUTH_FAILED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6020,
                        "src": "1188:17:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 6047,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "1140:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1140:66:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6056,
                  "nodeType": "ExpressionStatement",
                  "src": "1140:66:21"
                },
                {
                  "id": 6057,
                  "nodeType": "PlaceholderStatement",
                  "src": "1216:1:21"
                }
              ]
            },
            "documentation": null,
            "id": 6059,
            "name": "authP",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 6046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6042,
                  "name": "_role",
                  "nodeType": "VariableDeclaration",
                  "scope": 6059,
                  "src": "1096:13:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6041,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1096:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6045,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 6059,
                  "src": "1111:17:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6043,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1111:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6044,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1111:9:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1095:34:21"
            },
            "src": "1081:143:21",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6107,
              "nodeType": "Block",
              "src": "1739:398:21",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 6073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "1753:17:21",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 6071,
                        "name": "hasInitialized",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6413,
                        "src": "1754:14:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                          "typeString": "function () view returns (bool)"
                        }
                      },
                      "id": 6072,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1754:16:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6077,
                  "nodeType": "IfStatement",
                  "src": "1749:60:21",
                  "trueBody": {
                    "id": 6076,
                    "nodeType": "Block",
                    "src": "1772:37:21",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 6074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1793:5:21",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 6070,
                        "id": 6075,
                        "nodeType": "Return",
                        "src": "1786:12:21"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    6079
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6079,
                      "name": "linkedKernel",
                      "nodeType": "VariableDeclaration",
                      "scope": 6108,
                      "src": "1819:20:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IKernel_$8231",
                        "typeString": "contract IKernel"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6078,
                        "name": "IKernel",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8231,
                        "src": "1819:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$8231",
                          "typeString": "contract IKernel"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6082,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 6080,
                      "name": "kernel",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5959,
                      "src": "1842:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$8231_$",
                        "typeString": "function () view returns (contract IKernel)"
                      }
                    },
                    "id": 6081,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1842:8:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IKernel_$8231",
                      "typeString": "contract IKernel"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1819:31:21"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 6089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 6084,
                          "name": "linkedKernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6079,
                          "src": "1872:12:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IKernel_$8231",
                            "typeString": "contract IKernel"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IKernel_$8231",
                            "typeString": "contract IKernel"
                          }
                        ],
                        "id": 6083,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1864:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 6085,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1864:21:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1897:1:21",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 6086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1889:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 6088,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1889:10:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1864:35:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6093,
                  "nodeType": "IfStatement",
                  "src": "1860:78:21",
                  "trueBody": {
                    "id": 6092,
                    "nodeType": "Block",
                    "src": "1901:37:21",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 6090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1922:5:21",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 6070,
                        "id": 6091,
                        "nodeType": "Return",
                        "src": "1915:12:21"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6096,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6061,
                        "src": "1995:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6098,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10469,
                            "src": "2024:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AragonApp_$6120",
                              "typeString": "contract AragonApp"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AragonApp_$6120",
                              "typeString": "contract AragonApp"
                            }
                          ],
                          "id": 6097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2016:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 6099,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2016:13:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6100,
                        "name": "_role",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6063,
                        "src": "2043:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6103,
                            "name": "_params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6066,
                            "src": "2112:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 6101,
                            "name": "ConversionHelpers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6183,
                            "src": "2062:17:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ConversionHelpers_$6183_$",
                              "typeString": "type(library ConversionHelpers)"
                            }
                          },
                          "id": 6102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "dangerouslyCastUintArrayToBytes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6155,
                          "src": "2062:49:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (uint256[] memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 6104,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2062:58:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 6094,
                        "name": "linkedKernel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6079,
                        "src": "1955:12:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$8231",
                          "typeString": "contract IKernel"
                        }
                      },
                      "id": 6095,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "hasPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 8212,
                      "src": "1955:26:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (address,address,bytes32,bytes memory) view external returns (bool)"
                      }
                    },
                    "id": 6105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1955:175:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 6070,
                  "id": 6106,
                  "nodeType": "Return",
                  "src": "1948:182:21"
                }
              ]
            },
            "documentation": "@dev Check whether an action can be performed by a sender for a particular role on this app\n@param _sender Sender of the call\n@param _role Role on this app\n@param _params Permission params for the role\n@return Boolean indicating whether the sender has the permissions to perform the action.\n        Always returns false if the app hasn't been initialized yet.",
            "id": 6108,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "canPerform",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6067,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6061,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 6108,
                  "src": "1661:15:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6060,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1661:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6063,
                  "name": "_role",
                  "nodeType": "VariableDeclaration",
                  "scope": 6108,
                  "src": "1678:13:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6062,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1678:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6066,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 6108,
                  "src": "1693:17:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6064,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1693:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6065,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1693:9:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1660:51:21"
            },
            "payable": false,
            "returnParameters": {
              "id": 6070,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6069,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 6108,
                  "src": "1733:4:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6068,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1733:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1732:6:21"
            },
            "scope": 6120,
            "src": "1641:496:21",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6118,
              "nodeType": "Block",
              "src": "2311:171:21",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 6113,
                          "name": "kernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5959,
                          "src": "2408:6:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$8231_$",
                            "typeString": "function () view returns (contract IKernel)"
                          }
                        },
                        "id": 6114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2408:8:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$8231",
                          "typeString": "contract IKernel"
                        }
                      },
                      "id": 6115,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getRecoveryVault",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6342,
                      "src": "2408:25:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 6116,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2408:27:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 6112,
                  "id": 6117,
                  "nodeType": "Return",
                  "src": "2401:34:21"
                }
              ]
            },
            "documentation": "@dev Get the recovery vault for the app\n@return Recovery vault address for the app",
            "id": 6119,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getRecoveryVault",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6109,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2278:2:21"
            },
            "payable": false,
            "returnParameters": {
              "id": 6112,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6111,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 6119,
                  "src": "2302:7:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6110,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2302:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2301:9:21"
            },
            "scope": 6120,
            "src": "2253:229:21",
            "stateMutability": "view",
            "superFunction": 7052,
            "visibility": "public"
          }
        ],
        "scope": 6121,
        "src": "753:1731:21"
      }
    ],
    "src": "44:2441:21"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-06-07T23:27:00.567Z",
  "devdoc": {
    "methods": {
      "allowRecoverability(address)": {
        "details": "By default deriving from AragonApp makes it recoverable",
        "params": {
          "token": "Token address that would be recovered"
        },
        "return": "bool whether the app allows the recovery"
      },
      "canPerform(address,bytes32,uint256[])": {
        "details": "Check whether an action can be performed by a sender for a particular role on this app",
        "params": {
          "_params": "Permission params for the role",
          "_role": "Role on this app",
          "_sender": "Sender of the call"
        },
        "return": "Boolean indicating whether the sender has the permissions to perform the action.        Always returns false if the app hasn't been initialized yet."
      },
      "getInitializationBlock()": {
        "return": "Block number in which the contract was initialized"
      },
      "getRecoveryVault()": {
        "details": "Get the recovery vault for the app",
        "return": "Recovery vault address for the app"
      },
      "hasInitialized()": {
        "return": "Whether the contract has been initialized by the time of the current block"
      },
      "transferToVault(address)": {
        "params": {
          "_token": "Token balance to be sent to recovery vault."
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "transferToVault(address)": {
        "notice": "Send funds to recovery Vault. This contract should never receive funds,        but in case it does, this function allows one to recover them."
      }
    }
  }
}