{
  "contractName": "RBACMintableToken",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "mintingFinished",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_operator",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "string"
        }
      ],
      "name": "checkRole",
      "outputs": [],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_operator",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "string"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseApproval",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "finishMinting",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ROLE_MINTER",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_spender",
          "type": "address"
        },
        {
          "name": "_addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseApproval",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "_spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "role",
          "type": "string"
        }
      ],
      "name": "RoleAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "role",
          "type": "string"
        }
      ],
      "name": "RoleRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "MintFinished",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipRenounced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_minter",
          "type": "address"
        }
      ],
      "name": "addMinter",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_minter",
          "type": "address"
        }
      ],
      "name": "removeMinter",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405260038054600160a860020a03191633179055611099806100256000396000f3006080604052600436106101065763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b811461010b578063095ea7b3146101345780630988ca8c1461015857806318160ddd146101c1578063217fe6c6146101e857806323b872dd1461024f5780633092afd51461027957806340c10f191461029a57806366188463146102be57806370a08231146102e2578063715018a6146103035780637d64bcb4146103185780638da5cb5b1461032d57806392afc33a1461035e578063983b2d56146103e8578063a9059cbb14610409578063d73dd6231461042d578063dd62ed3e14610451578063f2fde38b14610478575b600080fd5b34801561011757600080fd5b50610120610499565b604080519115158252519081900360200190f35b34801561014057600080fd5b50610120600160a060020a03600435166024356104ba565b34801561016457600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101bf958335600160a060020a03169536956044949193909101919081908401838280828437509497506105209650505050505050565b005b3480156101cd57600080fd5b506101d661058e565b60408051918252519081900360200190f35b3480156101f457600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610120958335600160a060020a03169536956044949193909101919081908401838280828437509497506105949650505050505050565b34801561025b57600080fd5b50610120600160a060020a0360043581169060243516604435610607565b34801561028557600080fd5b506101bf600160a060020a036004351661077c565b3480156102a657600080fd5b50610120600160a060020a03600435166024356107c3565b3480156102ca57600080fd5b50610120600160a060020a03600435166024356108f3565b3480156102ee57600080fd5b506101d6600160a060020a03600435166109e2565b34801561030f57600080fd5b506101bf6109fd565b34801561032457600080fd5b50610120610a6b565b34801561033957600080fd5b50610342610b11565b60408051600160a060020a039092168252519081900360200190f35b34801561036a57600080fd5b50610373610b20565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ad578181015183820152602001610395565b50505050905090810190601f1680156103da5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f457600080fd5b506101bf600160a060020a0360043516610b45565b34801561041557600080fd5b50610120600160a060020a0360043516602435610b89565b34801561043957600080fd5b50610120600160a060020a0360043516602435610c68565b34801561045d57600080fd5b506101d6600160a060020a0360043581169060243516610d01565b34801561048457600080fd5b506101bf600160a060020a0360043516610d2c565b60035474010000000000000000000000000000000000000000900460ff1681565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b61058a826004836040518082805190602001908083835b602083106105565780518252601f199092019160209182019101610537565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050610d4c565b5050565b60015490565b6000610600836004846040518082805190602001908083835b602083106105cc5780518252601f1990920191602091820191016105ad565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050610d61565b9392505050565b600160a060020a03831660009081526020819052604081205482111561062c57600080fd5b600160a060020a038416600090815260026020908152604080832033845290915290205482111561065c57600080fd5b600160a060020a038316151561067157600080fd5b600160a060020a03841660009081526020819052604090205461069a908363ffffffff610d8016565b600160a060020a0380861660009081526020819052604080822093909355908516815220546106cf908363ffffffff610d9216565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054610711908363ffffffff610d8016565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b600354600160a060020a0316331461079357600080fd5b6107c08160408051908101604052806006815260200160008051602061104e833981519152815250610da5565b50565b60006107f23360408051908101604052806006815260200160008051602061104e833981519152815250610520565b60035474010000000000000000000000000000000000000000900460ff161561081a57600080fd5b60015461082d908363ffffffff610d9216565b600155600160a060020a038316600090815260208190526040902054610859908363ffffffff610d9216565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b336000908152600260209081526040808320600160a060020a038616845290915281205480831061094757336000908152600260209081526040808320600160a060020a038816845290915281205561097c565b610957818463ffffffff610d8016565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a03163314610a1457600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b600354600090600160a060020a03163314610a8557600080fd5b60035474010000000000000000000000000000000000000000900460ff1615610aad57600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600354600160a060020a031681565b604080518082019091526006815260008051602061104e833981519152602082015281565b600354600160a060020a03163314610b5c57600080fd5b6107c08160408051908101604052806006815260200160008051602061104e833981519152815250610eb6565b33600090815260208190526040812054821115610ba557600080fd5b600160a060020a0383161515610bba57600080fd5b33600090815260208190526040902054610bda908363ffffffff610d8016565b3360009081526020819052604080822092909255600160a060020a03851681522054610c0c908363ffffffff610d9216565b600160a060020a038416600081815260208181526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b336000908152600260209081526040808320600160a060020a0386168452909152812054610c9c908363ffffffff610d9216565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600354600160a060020a03163314610d4357600080fd5b6107c081610f88565b610d568282610d61565b151561058a57600080fd5b600160a060020a03166000908152602091909152604090205460ff1690565b600082821115610d8c57fe5b50900390565b81810182811015610d9f57fe5b92915050565b610e0f826004836040518082805190602001908083835b60208310610ddb5780518252601f199092019160209182019101610dbc565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611006565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e78578181015183820152602001610e60565b50505050905090810190601f168015610ea55780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b610f20826004836040518082805190602001908083835b60208310610eec5780518252601f199092019160209182019101610ecd565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611028565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b7004898260405180806020018281038252838181518152602001915080519060200190808383600083811015610e78578181015183820152602001610e60565b600160a060020a0381161515610f9d57600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0316600090815260209190915260409020805460ff1916600117905556006d696e7465720000000000000000000000000000000000000000000000000000a165627a7a7230582096d52e7f11070ec27f42d4bda44bb221dbab20faec91ddfa059b8bb25e380ef90029",
  "deployedBytecode": "0x6080604052600436106101065763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b811461010b578063095ea7b3146101345780630988ca8c1461015857806318160ddd146101c1578063217fe6c6146101e857806323b872dd1461024f5780633092afd51461027957806340c10f191461029a57806366188463146102be57806370a08231146102e2578063715018a6146103035780637d64bcb4146103185780638da5cb5b1461032d57806392afc33a1461035e578063983b2d56146103e8578063a9059cbb14610409578063d73dd6231461042d578063dd62ed3e14610451578063f2fde38b14610478575b600080fd5b34801561011757600080fd5b50610120610499565b604080519115158252519081900360200190f35b34801561014057600080fd5b50610120600160a060020a03600435166024356104ba565b34801561016457600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101bf958335600160a060020a03169536956044949193909101919081908401838280828437509497506105209650505050505050565b005b3480156101cd57600080fd5b506101d661058e565b60408051918252519081900360200190f35b3480156101f457600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610120958335600160a060020a03169536956044949193909101919081908401838280828437509497506105949650505050505050565b34801561025b57600080fd5b50610120600160a060020a0360043581169060243516604435610607565b34801561028557600080fd5b506101bf600160a060020a036004351661077c565b3480156102a657600080fd5b50610120600160a060020a03600435166024356107c3565b3480156102ca57600080fd5b50610120600160a060020a03600435166024356108f3565b3480156102ee57600080fd5b506101d6600160a060020a03600435166109e2565b34801561030f57600080fd5b506101bf6109fd565b34801561032457600080fd5b50610120610a6b565b34801561033957600080fd5b50610342610b11565b60408051600160a060020a039092168252519081900360200190f35b34801561036a57600080fd5b50610373610b20565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ad578181015183820152602001610395565b50505050905090810190601f1680156103da5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f457600080fd5b506101bf600160a060020a0360043516610b45565b34801561041557600080fd5b50610120600160a060020a0360043516602435610b89565b34801561043957600080fd5b50610120600160a060020a0360043516602435610c68565b34801561045d57600080fd5b506101d6600160a060020a0360043581169060243516610d01565b34801561048457600080fd5b506101bf600160a060020a0360043516610d2c565b60035474010000000000000000000000000000000000000000900460ff1681565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b61058a826004836040518082805190602001908083835b602083106105565780518252601f199092019160209182019101610537565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050610d4c565b5050565b60015490565b6000610600836004846040518082805190602001908083835b602083106105cc5780518252601f1990920191602091820191016105ad565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050610d61565b9392505050565b600160a060020a03831660009081526020819052604081205482111561062c57600080fd5b600160a060020a038416600090815260026020908152604080832033845290915290205482111561065c57600080fd5b600160a060020a038316151561067157600080fd5b600160a060020a03841660009081526020819052604090205461069a908363ffffffff610d8016565b600160a060020a0380861660009081526020819052604080822093909355908516815220546106cf908363ffffffff610d9216565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054610711908363ffffffff610d8016565b600160a060020a03808616600081815260026020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b600354600160a060020a0316331461079357600080fd5b6107c08160408051908101604052806006815260200160008051602061104e833981519152815250610da5565b50565b60006107f23360408051908101604052806006815260200160008051602061104e833981519152815250610520565b60035474010000000000000000000000000000000000000000900460ff161561081a57600080fd5b60015461082d908363ffffffff610d9216565b600155600160a060020a038316600090815260208190526040902054610859908363ffffffff610d9216565b600160a060020a03841660008181526020818152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b336000908152600260209081526040808320600160a060020a038616845290915281205480831061094757336000908152600260209081526040808320600160a060020a038816845290915281205561097c565b610957818463ffffffff610d8016565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a03163314610a1457600080fd5b600354604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26003805473ffffffffffffffffffffffffffffffffffffffff19169055565b600354600090600160a060020a03163314610a8557600080fd5b60035474010000000000000000000000000000000000000000900460ff1615610aad57600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600354600160a060020a031681565b604080518082019091526006815260008051602061104e833981519152602082015281565b600354600160a060020a03163314610b5c57600080fd5b6107c08160408051908101604052806006815260200160008051602061104e833981519152815250610eb6565b33600090815260208190526040812054821115610ba557600080fd5b600160a060020a0383161515610bba57600080fd5b33600090815260208190526040902054610bda908363ffffffff610d8016565b3360009081526020819052604080822092909255600160a060020a03851681522054610c0c908363ffffffff610d9216565b600160a060020a038416600081815260208181526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b336000908152600260209081526040808320600160a060020a0386168452909152812054610c9c908363ffffffff610d9216565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600354600160a060020a03163314610d4357600080fd5b6107c081610f88565b610d568282610d61565b151561058a57600080fd5b600160a060020a03166000908152602091909152604090205460ff1690565b600082821115610d8c57fe5b50900390565b81810182811015610d9f57fe5b92915050565b610e0f826004836040518082805190602001908083835b60208310610ddb5780518252601f199092019160209182019101610dbc565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611006565b81600160a060020a03167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e78578181015183820152602001610e60565b50505050905090810190601f168015610ea55780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b610f20826004836040518082805190602001908083835b60208310610eec5780518252601f199092019160209182019101610ecd565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092915050611028565b81600160a060020a03167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b7004898260405180806020018281038252838181518152602001915080519060200190808383600083811015610e78578181015183820152602001610e60565b600160a060020a0381161515610f9d57600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a0316600090815260209190915260409020805460ff19169055565b600160a060020a0316600090815260209190915260409020805460ff1916600117905556006d696e7465720000000000000000000000000000000000000000000000000000a165627a7a7230582096d52e7f11070ec27f42d4bda44bb221dbab20faec91ddfa059b8bb25e380ef90029",
  "sourceMap": "230:701:29:-;;;436:35:27;;;-1:-1:-1;;;;;;567:18:21;575:10;567:18;;;230:701:29;;;;;;",
  "deployedSourceMap": "230:701:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;436:35:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;436:35:27;;;;;;;;;;;;;;;;;;;;;;1814:188:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1814:188:30;-1:-1:-1;;;;;1814:188:30;;;;;;;837:114:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;837:114:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;837:114:15;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;837:114:15;;-1:-1:-1;837:114:15;;-1:-1:-1;;;;;;;837:114:15;;;389:83:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;389:83:22;;;;;;;;;;;;;;;;;;;;1091:136:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1091:136:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1091:136:15;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1091:136:15;;-1:-1:-1;1091:136:15;;-1:-1:-1;;;;;;;1091:136:15;726:470:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;726:470:30;-1:-1:-1;;;;;726:470:30;;;;;;;;;;;;830:99:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;830:99:29;-1:-1:-1;;;;;830:99:29;;;;;854:312:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;854:312:27;-1:-1:-1;;;;;854:312:27;;;;;;;3679:432:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3679:432:30;-1:-1:-1;;;;;3679:432:30;;;;;;;1149:99:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1149:99:22;-1:-1:-1;;;;;1149:99:22;;;;;1001:111:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1001:111:21;;;;1280:140:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1280:140:27;;;;238:20:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;238:20:21;;;;;;;;-1:-1:-1;;;;;238:20:21;;;;;;;;;;;;;;346:45:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;346:45:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;346:45:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;646:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;646:93:29;-1:-1:-1;;;;;646:93:29;;;;;626:321:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;626:321:22;-1:-1:-1;;;;;626:321:22;;;;;;;2926:296:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2926:296:30;-1:-1:-1;;;;;2926:296:30;;;;;;;2321:153;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2321:153:30;-1:-1:-1;;;;;2321:153:30;;;;;;;;;;1274:103:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1274:103:21;-1:-1:-1;;;;;1274:103:21;;;;;436:35:27;;;;;;;;;:::o;1814:188:30:-;1901:10;1881:4;1893:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;1893:29:30;;;;;;;;;;;:38;;;1942;;;;;;;1881:4;;1893:29;;1901:10;;1942:38;;;;;;;;-1:-1:-1;1993:4:30;1814:188;;;;:::o;837:114:15:-;917:29;936:9;917:5;923;917:12;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;917:12:15;;;;;-1:-1:-1;917:12:15;;;;;;;;;;;;-1:-1:-1;;917:18:15;:29::i;:::-;837:114;;:::o;389:83:22:-;455:12;;389:83;:::o;1091:136:15:-;1174:4;1195:27;1212:9;1195:5;1201;1195:12;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1195:12:15;;;;;-1:-1:-1;1195:12:15;;;;;;;;;;;;-1:-1:-1;;1195:16:15;:27::i;:::-;1188:34;1091:136;-1:-1:-1;;;1091:136:15:o;726:470:30:-;-1:-1:-1;;;;;864:15:30;;832:4;864:15;;;;;;;;;;;854:25;;;846:34;;;;;;-1:-1:-1;;;;;904:14:30;;;;;;:7;:14;;;;;;;;919:10;904:26;;;;;;;;894:36;;;886:45;;;;;;-1:-1:-1;;;;;945:17:30;;;;937:26;;;;;;-1:-1:-1;;;;;988:15:30;;:8;:15;;;;;;;;;;;:27;;1008:6;988:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;970:15:30;;;:8;:15;;;;;;;;;;;:45;;;;1037:13;;;;;;;:25;;1055:6;1037:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;1021:13:30;;;:8;:13;;;;;;;;;;;:41;;;;1097:14;;;;;:7;:14;;;;;1112:10;1097:26;;;;;;;:38;;1128:6;1097:38;:30;:38;:::i;:::-;-1:-1:-1;;;;;1068:14:30;;;;;;;:7;:14;;;;;;;;1083:10;1068:26;;;;;;;;:67;;;;1146:28;;;;;;;;;;;1068:14;;1146:28;;;;;;;;;;;-1:-1:-1;1187:4:30;726:470;;;;;:::o;830:99:29:-;719:5:21;;-1:-1:-1;;;;;719:5:21;705:10;:19;697:28;;;;;;892:32:29;903:7;912:11;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;912:11:29;;;892:10;:32::i;:::-;830:99;:::o;854:312:27:-;968:4;514:34:29;524:10;536:11;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;536:11:29;;;514:9;:34::i;:::-;511:15:27;;;;;;;510:16;502:25;;;;;;997:12;;:25;;1014:7;997:25;:16;:25;:::i;:::-;982:12;:40;-1:-1:-1;;;;;1044:13:27;;:8;:13;;;;;;;;;;;:26;;1062:7;1044:26;:17;:26;:::i;:::-;-1:-1:-1;;;;;1028:13:27;;:8;:13;;;;;;;;;;;;:42;;;;1081:18;;;;;;;1028:13;;1081:18;;;;;;;;;1110:34;;;;;;;;-1:-1:-1;;;;;1110:34:27;;;1127:1;;1110:34;;;;;;;;;-1:-1:-1;1157:4:27;854:312;;;;:::o;3679:432:30:-;3826:10;3785:4;3818:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3818:29:30;;;;;;;;;;3857:28;;;3853:165;;3903:10;3927:1;3895:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3895:29:30;;;;;;;;;:33;3853:165;;;3981:30;:8;3994:16;3981:30;:12;:30;:::i;:::-;3957:10;3949:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3949:29:30;;;;;;;;;:62;3853:165;4037:10;4059:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;4028:61:30;;4059:29;;;;;;;;;;;4028:61;;;;;;;;;4037:10;4028:61;;;;;;;;;;;-1:-1:-1;4102:4:30;;3679:432;-1:-1:-1;;;3679:432:30:o;1149:99:22:-;-1:-1:-1;;;;;1227:16:22;1205:7;1227:16;;;;;;;;;;;;1149:99::o;1001:111:21:-;719:5;;-1:-1:-1;;;;;719:5:21;705:10;:19;697:28;;;;;;1077:5;;1058:25;;-1:-1:-1;;;;;1077:5:21;;;;1058:25;;1077:5;;1058:25;1089:5;:18;;-1:-1:-1;;1089:18:21;;;1001:111::o;1280:140:27:-;719:5:21;;1339:4:27;;-1:-1:-1;;;;;719:5:21;705:10;:19;697:28;;;;;;511:15:27;;;;;;;510:16;502:25;;;;;;1351:15;:22;;-1:-1:-1;;1351:22:27;;;;;1384:14;;;;1351:22;;1384:14;-1:-1:-1;1411:4:27;1280:140;:::o;238:20:21:-;;;-1:-1:-1;;;;;238:20:21;;:::o;346:45:29:-;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;346:45:29;;;;;:::o;646:93::-;719:5:21;;-1:-1:-1;;;;;719:5:21;705:10;:19;697:28;;;;;;705:29:29;713:7;722:11;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;722:11:29;;;705:7;:29::i;626:321:22:-;728:10;689:4;719:20;;;;;;;;;;;709:30;;;701:39;;;;;;-1:-1:-1;;;;;754:17:22;;;;746:26;;;;;;811:10;802:8;:20;;;;;;;;;;;:32;;827:6;802:32;:24;:32;:::i;:::-;788:10;779:8;:20;;;;;;;;;;;:55;;;;-1:-1:-1;;;;;856:13:22;;;;;;:25;;874:6;856:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;840:13:22;;:8;:13;;;;;;;;;;;;:41;;;;892:33;;;;;;;840:13;;901:10;;892:33;;;;;;;;;;-1:-1:-1;938:4:22;626:321;;;;:::o;2926:296:30:-;3089:10;3027:4;3081:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3081:29:30;;;;;;;;;;:46;;3115:11;3081:46;:33;:46;:::i;:::-;3049:10;3041:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3041:29:30;;;;;;;;;;;;:87;;;3139:61;;;;;;3041:29;;3139:61;;;;;;;;;;;-1:-1:-1;3213:4:30;2926:296;;;;:::o;2321:153::-;-1:-1:-1;;;;;2444:15:30;;;2420:7;2444:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;2321:153::o;1274:103:21:-;719:5;;-1:-1:-1;;;;;719:5:21;705:10;:19;697:28;;;;;;1343:29;1362:9;1343:18;:29::i;666:111:16:-;754:17;758:5;765;754:3;:17::i;:::-;746:26;;;;;;;855:128;-1:-1:-1;;;;;959:19:16;938:4;959:19;;;;;;;;;;;;;;;855:128::o;1060:116:20:-;1120:7;1142:8;;;;1135:16;;;;-1:-1:-1;1164:7:20;;;1060:116::o;1238:128::-;1319:7;;;1339;;;;1332:15;;;;1238:128;;;;:::o;1613:149:15:-;1687:30;1707:9;1687:5;1693;1687:12;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1687:12:15;;;;;-1:-1:-1;1687:12:15;;;;;;;;;;;;-1:-1:-1;;1687:19:15;:30::i;:::-;1740:9;-1:-1:-1;;;;;1728:29:15;;1751:5;1728:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;1728:29:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:149;;:::o;1347:141::-;1418:27;1435:9;1418:5;1424;1418:12;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1418:12:15;;;;;-1:-1:-1;1418:12:15;;;;;;;;;;;;-1:-1:-1;;1418:16:15;:27::i;:::-;1466:9;-1:-1:-1;;;;;1456:27:15;;1477:5;1456:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;1512:171:21;-1:-1:-1;;;;;1582:23:21;;;;1574:32;;;;;;1638:5;;1617:38;;-1:-1:-1;;;;;1617:38:21;;;;1638:5;;1617:38;;1638:5;;1617:38;1661:5;:17;;-1:-1:-1;;1661:17:21;-1:-1:-1;;;;;1661:17:21;;;;;;;;;;1512:171::o;486:104:16:-;-1:-1:-1;;;;;558:19:16;580:5;558:19;;;;;;;;;;;:27;;-1:-1:-1;;558:27:16;;;486:104::o;321:100::-;-1:-1:-1;;;;;390:19:16;:12;:19;;;;;;;;;;;:26;;-1:-1:-1;;390:26:16;412:4;390:26;;;321:100::o",
  "source": "pragma solidity ^0.4.24;\n\nimport \"./MintableToken.sol\";\nimport \"../../access/rbac/RBAC.sol\";\n\n\n/**\n * @title RBACMintableToken\n * @author Vittorio Minacori (@vittominacori)\n * @dev Mintable Token, with RBAC minter permissions\n */\ncontract RBACMintableToken is MintableToken, RBAC {\n  /**\n   * A constant role name for indicating minters.\n   */\n  string public constant ROLE_MINTER = \"minter\";\n\n  /**\n   * @dev override the Mintable token modifier to add role based logic\n   */\n  modifier hasMintPermission() {\n    checkRole(msg.sender, ROLE_MINTER);\n    _;\n  }\n\n  /**\n   * @dev add a minter role to an address\n   * @param _minter address\n   */\n  function addMinter(address _minter) public onlyOwner {\n    addRole(_minter, ROLE_MINTER);\n  }\n\n  /**\n   * @dev remove a minter role from an address\n   * @param _minter address\n   */\n  function removeMinter(address _minter) public onlyOwner {\n    removeRole(_minter, ROLE_MINTER);\n  }\n}\n",
  "sourcePath": "zeppelin-solidity/contracts/token/ERC20/RBACMintableToken.sol",
  "ast": {
    "absolutePath": "zeppelin-solidity/contracts/token/ERC20/RBACMintableToken.sol",
    "exportedSymbols": {
      "RBACMintableToken": [
        4654
      ]
    },
    "id": 4655,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4608,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:29"
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/token/ERC20/MintableToken.sol",
        "file": "./MintableToken.sol",
        "id": 4609,
        "nodeType": "ImportDirective",
        "scope": 4655,
        "sourceUnit": 4505,
        "src": "26:29:29",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/access/rbac/RBAC.sol",
        "file": "../../access/rbac/RBAC.sol",
        "id": 4610,
        "nodeType": "ImportDirective",
        "scope": 4655,
        "sourceUnit": 3752,
        "src": "56:36:29",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4611,
              "name": "MintableToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4504,
              "src": "260:13:29",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MintableToken_$4504",
                "typeString": "contract MintableToken"
              }
            },
            "id": 4612,
            "nodeType": "InheritanceSpecifier",
            "src": "260:13:29"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4613,
              "name": "RBAC",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3751,
              "src": "275:4:29",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RBAC_$3751",
                "typeString": "contract RBAC"
              }
            },
            "id": 4614,
            "nodeType": "InheritanceSpecifier",
            "src": "275:4:29"
          }
        ],
        "contractDependencies": [
          3751,
          4122,
          4218,
          4366,
          4398,
          4504,
          4901
        ],
        "contractKind": "contract",
        "documentation": "@title RBACMintableToken\n@author Vittorio Minacori (@vittominacori)\n@dev Mintable Token, with RBAC minter permissions",
        "fullyImplemented": true,
        "id": 4654,
        "linearizedBaseContracts": [
          4654,
          3751,
          4504,
          4122,
          4901,
          4218,
          4366,
          4398
        ],
        "name": "RBACMintableToken",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 4617,
            "name": "ROLE_MINTER",
            "nodeType": "VariableDeclaration",
            "scope": 4654,
            "src": "346:45:29",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4615,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "346:6:29",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "6d696e746572",
              "id": 4616,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "383:8:29",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_39eb9ec2059d897c44a17440c762c429de204f6fddd727156ca52b8da086a6f7",
                "typeString": "literal_string \"minter\""
              },
              "value": "minter"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 4626,
              "nodeType": "Block",
              "src": "508:52:29",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4620,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4916,
                          "src": "524:3:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4621,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "524:10:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4622,
                        "name": "ROLE_MINTER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4617,
                        "src": "536:11:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 4619,
                      "name": "checkRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3681,
                      "src": "514:9:29",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,string memory) view"
                      }
                    },
                    "id": 4623,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "514:34:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4624,
                  "nodeType": "ExpressionStatement",
                  "src": "514:34:29"
                },
                {
                  "id": 4625,
                  "nodeType": "PlaceholderStatement",
                  "src": "554:1:29"
                }
              ]
            },
            "documentation": "@dev override the Mintable token modifier to add role based logic",
            "id": 4627,
            "name": "hasMintPermission",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 4618,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "505:2:29"
            },
            "src": "479:81:29",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4639,
              "nodeType": "Block",
              "src": "699:40:29",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4635,
                        "name": "_minter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4629,
                        "src": "713:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4636,
                        "name": "ROLE_MINTER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4617,
                        "src": "722:11:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 4634,
                      "name": "addRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3718,
                      "src": "705:7:29",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,string memory)"
                      }
                    },
                    "id": 4637,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "705:29:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4638,
                  "nodeType": "ExpressionStatement",
                  "src": "705:29:29"
                }
              ]
            },
            "documentation": "@dev add a minter role to an address\n@param _minter address",
            "id": 4640,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 4632,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4631,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4070,
                  "src": "689:9:29",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "689:9:29"
              }
            ],
            "name": "addMinter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4630,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4629,
                  "name": "_minter",
                  "nodeType": "VariableDeclaration",
                  "scope": 4640,
                  "src": "665:15:29",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4628,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "665:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "664:17:29"
            },
            "payable": false,
            "returnParameters": {
              "id": 4633,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "699:0:29"
            },
            "scope": 4654,
            "src": "646:93:29",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4652,
              "nodeType": "Block",
              "src": "886:43:29",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4648,
                        "name": "_minter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4642,
                        "src": "903:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4649,
                        "name": "ROLE_MINTER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4617,
                        "src": "912:11:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 4647,
                      "name": "removeRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3738,
                      "src": "892:10:29",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,string memory)"
                      }
                    },
                    "id": 4650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "892:32:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4651,
                  "nodeType": "ExpressionStatement",
                  "src": "892:32:29"
                }
              ]
            },
            "documentation": "@dev remove a minter role from an address\n@param _minter address",
            "id": 4653,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 4645,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4644,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4070,
                  "src": "876:9:29",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "876:9:29"
              }
            ],
            "name": "removeMinter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4643,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4642,
                  "name": "_minter",
                  "nodeType": "VariableDeclaration",
                  "scope": 4653,
                  "src": "852:15:29",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4641,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "852:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "851:17:29"
            },
            "payable": false,
            "returnParameters": {
              "id": 4646,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "886:0:29"
            },
            "scope": 4654,
            "src": "830:99:29",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 4655,
        "src": "230:701:29"
      }
    ],
    "src": "0:932:29"
  },
  "legacyAST": {
    "absolutePath": "zeppelin-solidity/contracts/token/ERC20/RBACMintableToken.sol",
    "exportedSymbols": {
      "RBACMintableToken": [
        4654
      ]
    },
    "id": 4655,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4608,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:29"
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/token/ERC20/MintableToken.sol",
        "file": "./MintableToken.sol",
        "id": 4609,
        "nodeType": "ImportDirective",
        "scope": 4655,
        "sourceUnit": 4505,
        "src": "26:29:29",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/access/rbac/RBAC.sol",
        "file": "../../access/rbac/RBAC.sol",
        "id": 4610,
        "nodeType": "ImportDirective",
        "scope": 4655,
        "sourceUnit": 3752,
        "src": "56:36:29",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4611,
              "name": "MintableToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4504,
              "src": "260:13:29",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MintableToken_$4504",
                "typeString": "contract MintableToken"
              }
            },
            "id": 4612,
            "nodeType": "InheritanceSpecifier",
            "src": "260:13:29"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 4613,
              "name": "RBAC",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3751,
              "src": "275:4:29",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RBAC_$3751",
                "typeString": "contract RBAC"
              }
            },
            "id": 4614,
            "nodeType": "InheritanceSpecifier",
            "src": "275:4:29"
          }
        ],
        "contractDependencies": [
          3751,
          4122,
          4218,
          4366,
          4398,
          4504,
          4901
        ],
        "contractKind": "contract",
        "documentation": "@title RBACMintableToken\n@author Vittorio Minacori (@vittominacori)\n@dev Mintable Token, with RBAC minter permissions",
        "fullyImplemented": true,
        "id": 4654,
        "linearizedBaseContracts": [
          4654,
          3751,
          4504,
          4122,
          4901,
          4218,
          4366,
          4398
        ],
        "name": "RBACMintableToken",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 4617,
            "name": "ROLE_MINTER",
            "nodeType": "VariableDeclaration",
            "scope": 4654,
            "src": "346:45:29",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 4615,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "346:6:29",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "6d696e746572",
              "id": 4616,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "383:8:29",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_39eb9ec2059d897c44a17440c762c429de204f6fddd727156ca52b8da086a6f7",
                "typeString": "literal_string \"minter\""
              },
              "value": "minter"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 4626,
              "nodeType": "Block",
              "src": "508:52:29",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4620,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4916,
                          "src": "524:3:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4621,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "524:10:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4622,
                        "name": "ROLE_MINTER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4617,
                        "src": "536:11:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 4619,
                      "name": "checkRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3681,
                      "src": "514:9:29",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,string memory) view"
                      }
                    },
                    "id": 4623,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "514:34:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4624,
                  "nodeType": "ExpressionStatement",
                  "src": "514:34:29"
                },
                {
                  "id": 4625,
                  "nodeType": "PlaceholderStatement",
                  "src": "554:1:29"
                }
              ]
            },
            "documentation": "@dev override the Mintable token modifier to add role based logic",
            "id": 4627,
            "name": "hasMintPermission",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 4618,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "505:2:29"
            },
            "src": "479:81:29",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4639,
              "nodeType": "Block",
              "src": "699:40:29",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4635,
                        "name": "_minter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4629,
                        "src": "713:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4636,
                        "name": "ROLE_MINTER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4617,
                        "src": "722:11:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 4634,
                      "name": "addRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3718,
                      "src": "705:7:29",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,string memory)"
                      }
                    },
                    "id": 4637,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "705:29:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4638,
                  "nodeType": "ExpressionStatement",
                  "src": "705:29:29"
                }
              ]
            },
            "documentation": "@dev add a minter role to an address\n@param _minter address",
            "id": 4640,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 4632,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4631,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4070,
                  "src": "689:9:29",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "689:9:29"
              }
            ],
            "name": "addMinter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4630,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4629,
                  "name": "_minter",
                  "nodeType": "VariableDeclaration",
                  "scope": 4640,
                  "src": "665:15:29",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4628,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "665:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "664:17:29"
            },
            "payable": false,
            "returnParameters": {
              "id": 4633,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "699:0:29"
            },
            "scope": 4654,
            "src": "646:93:29",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4652,
              "nodeType": "Block",
              "src": "886:43:29",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4648,
                        "name": "_minter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4642,
                        "src": "903:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4649,
                        "name": "ROLE_MINTER",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4617,
                        "src": "912:11:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 4647,
                      "name": "removeRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3738,
                      "src": "892:10:29",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,string memory)"
                      }
                    },
                    "id": 4650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "892:32:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4651,
                  "nodeType": "ExpressionStatement",
                  "src": "892:32:29"
                }
              ]
            },
            "documentation": "@dev remove a minter role from an address\n@param _minter address",
            "id": 4653,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 4645,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4644,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4070,
                  "src": "876:9:29",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "876:9:29"
              }
            ],
            "name": "removeMinter",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4643,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4642,
                  "name": "_minter",
                  "nodeType": "VariableDeclaration",
                  "scope": 4653,
                  "src": "852:15:29",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4641,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "852:7:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "851:17:29"
            },
            "payable": false,
            "returnParameters": {
              "id": 4646,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "886:0:29"
            },
            "scope": 4654,
            "src": "830:99:29",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 4655,
        "src": "230:701:29"
      }
    ],
    "src": "0:932:29"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-10-16T05:56:33.188Z"
}