{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "initialSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxInflationPerDay",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "charter",
      "outputs": [
        {
          "internalType": "contract Charter",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxNewSupplyPerPeriod",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract Charter",
          "name": "newCharter",
          "type": "address"
        }
      ],
      "name": "setCharter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x60806040523480156200001157600080fd5b5060405162000e6638038062000e6683398101604081905262000034916200030c565b818162015180868681600390805190602001906200005492919062000199565b5080516200006a90600490602084019062000199565b5050600680546001600160a01b03191633908117909155600793909355506008556009919091556000600a819055600b55620000a79083620000b1565b50505050620003e9565b6001600160a01b0382166200010c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806002600082825462000120919062000386565b90915550506001600160a01b038216600090815260208190526040812080548392906200014f90849062000386565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001a790620003ad565b90600052602060002090601f016020900481019282620001cb576000855562000216565b82601f10620001e657805160ff191683800117855562000216565b8280016001018555821562000216579182015b8281111562000216578251825591602001919060010190620001f9565b506200022492915062000228565b5090565b5b8082111562000224576000815560010162000229565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200026757600080fd5b81516001600160401b03808211156200028457620002846200023f565b604051601f8301601f19908116603f01168101908282118183101715620002af57620002af6200023f565b81604052838152602092508683858801011115620002cc57600080fd5b600091505b83821015620002f05785820183015181830184015290820190620002d1565b83821115620003025760008385830101525b9695505050505050565b600080600080608085870312156200032357600080fd5b84516001600160401b03808211156200033b57600080fd5b620003498883890162000255565b955060208701519150808211156200036057600080fd5b506200036f8782880162000255565b604087015160609097015195989097509350505050565b60008219821115620003a857634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003c257607f821691505b602082108103620003e357634e487b7160e01b600052602260045260246000fd5b50919050565b610a6d80620003f96000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063b55121a711610066578063b55121a7146101ee578063b94ed2d1146101f7578063c1aadb4d1461020a578063dd62ed3e1461023557600080fd5b806370a082311461019757806395d89b41146101c0578063a457c2d7146101c8578063a9059cbb146101db57600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806340c10f191461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b610102610248565b60405161010f91906108c9565b60405180910390f35b61012b610126366004610936565b6102da565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b366004610962565b6102f2565b6040516012815260200161010f565b61012b61017d366004610936565b610316565b610195610190366004610936565b610338565b005b61013f6101a53660046109a3565b6001600160a01b031660009081526020819052604090205490565b610102610367565b61012b6101d6366004610936565b610376565b61012b6101e9366004610936565b6103f6565b61013f60075481565b6101956102053660046109a3565b610404565b60055461021d906001600160a01b031681565b6040516001600160a01b03909116815260200161010f565b61013f6102433660046109c7565b610453565b60606003805461025790610a00565b80601f016020809104026020016040519081016040528092919081815260200182805461028390610a00565b80156102d05780601f106102a5576101008083540402835291602001916102d0565b820191906000526020600020905b8154815290600101906020018083116102b357829003601f168201915b5050505050905090565b6000336102e881858561047e565b5060019392505050565b6000336103008582856105a2565b61030b85858561061c565b506001949350505050565b6000336102e88185856103298383610453565b6103339190610a3a565b61047e565b3361034257600080fd5b6005546001600160a01b0316331461035957600080fd5b61036382826107ea565b5050565b60606004805461025790610a00565b600033816103848286610453565b9050838110156103e95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61030b828686840361047e565b6000336102e881858561061c565b6006546001600160a01b0316331461041b57600080fd5b6005546001600160a01b03161561043157600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104e05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103e0565b6001600160a01b0382166105415760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103e0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006105ae8484610453565b9050600019811461061657818110156106095760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103e0565b610616848484840361047e565b50505050565b6001600160a01b0383166106805760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103e0565b6001600160a01b0382166106e25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103e0565b6001600160a01b0383166000908152602081905260409020548181101561075a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103e0565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610791908490610a3a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107dd91815260200190565b60405180910390a3610616565b6001600160a01b0382166108405760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103e0565b80600260008282546108529190610a3a565b90915550506001600160a01b0382166000908152602081905260408120805483929061087f908490610a3a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b818110156108f6578581018301518582016040015282016108da565b81811115610908576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461093357600080fd5b50565b6000806040838503121561094957600080fd5b82356109548161091e565b946020939093013593505050565b60008060006060848603121561097757600080fd5b83356109828161091e565b925060208401356109928161091e565b929592945050506040919091013590565b6000602082840312156109b557600080fd5b81356109c08161091e565b9392505050565b600080604083850312156109da57600080fd5b82356109e58161091e565b915060208301356109f58161091e565b809150509250929050565b600181811c90821680610a1457607f821691505b602082108103610a3457634e487b7160e01b600052602260045260246000fd5b50919050565b60008219821115610a5b57634e487b7160e01b600052601160045260246000fd5b50019056fea164736f6c634300080d000a",
    "sourceMap": "2329:519:14:-:0;;;2394:337;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2594:13;2621:18;2653:5;2551:4;2557:6;2052:5:1;2044;:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2067:17:1;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;664:8:14;:21;;-1:-1:-1;;;;;;664:21:14;675:10;664:21;;;;;;656::17;:46;;;;-1:-1:-1;712:20:17;:44;766:24;:41;;;;664:8:14;817:25:17;:29;;;856:11;:15;2692:32:14::2;::::0;2710:13;2692:5:::2;:32::i;:::-;2394:337:::0;;;;2329:519;;8411:389:1;-1:-1:-1;;;;;8494:21:1;;8486:65;;;;-1:-1:-1;;;8486:65:1;;1928:2:22;8486:65:1;;;1910:21:22;1967:2;1947:18;;;1940:30;2006:33;1986:18;;;1979:61;2057:18;;8486:65:1;;;;;;;;8638:6;8622:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8654:18:1;;:9;:18;;;;;;;;;;:28;;8676:6;;8654:9;:28;;8676:6;;8654:28;:::i;:::-;;;;-1:-1:-1;;8697:37:1;;2462:25:22;;;-1:-1:-1;;;;;8697:37:1;;;8714:1;;8697:37;;2450:2:22;2435:18;8697:37:1;;;;;;;8411:389;;:::o;2329:519:14:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2329:519:14;;;-1:-1:-1;2329:519:14;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:22;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:885;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:22;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:22;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;930:2;927:1;924:9;921:80;;;989:1;984:2;979;971:6;967:15;963:24;956:35;921:80;1019:6;146:885;-1:-1:-1;;;;;;146:885:22:o;1036:685::-;1153:6;1161;1169;1177;1230:3;1218:9;1209:7;1205:23;1201:33;1198:53;;;1247:1;1244;1237:12;1198:53;1274:16;;-1:-1:-1;;;;;1339:14:22;;;1336:34;;;1366:1;1363;1356:12;1336:34;1389:61;1442:7;1433:6;1422:9;1418:22;1389:61;:::i;:::-;1379:71;;1496:2;1485:9;1481:18;1475:25;1459:41;;1525:2;1515:8;1512:16;1509:36;;;1541:1;1538;1531:12;1509:36;;1564:63;1619:7;1608:8;1597:9;1593:24;1564:63;:::i;:::-;1667:2;1652:18;;1646:25;1711:2;1696:18;;;1690:25;1036:685;;1554:73;;-1:-1:-1;1036:685:22;-1:-1:-1;;;;1036:685:22:o;2086:225::-;2126:3;2157:1;2153:6;2150:1;2147:13;2144:136;;;2202:10;2197:3;2193:20;2190:1;2183:31;2237:4;2234:1;2227:15;2265:4;2262:1;2255:15;2144:136;-1:-1:-1;2296:9:22;;2086:225::o;2498:380::-;2577:1;2573:12;;;;2620;;;2641:61;;2695:4;2687:6;2683:17;2673:27;;2641:61;2748:2;2740:6;2737:14;2717:18;2714:38;2711:161;;2794:10;2789:3;2785:20;2782:1;2775:31;2829:4;2826:1;2819:15;2857:4;2854:1;2847:15;2711:161;;2498:380;;;:::o;:::-;2329:519:14;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063b55121a711610066578063b55121a7146101ee578063b94ed2d1146101f7578063c1aadb4d1461020a578063dd62ed3e1461023557600080fd5b806370a082311461019757806395d89b41146101c0578063a457c2d7146101c8578063a9059cbb146101db57600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806340c10f191461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b610102610248565b60405161010f91906108c9565b60405180910390f35b61012b610126366004610936565b6102da565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b366004610962565b6102f2565b6040516012815260200161010f565b61012b61017d366004610936565b610316565b610195610190366004610936565b610338565b005b61013f6101a53660046109a3565b6001600160a01b031660009081526020819052604090205490565b610102610367565b61012b6101d6366004610936565b610376565b61012b6101e9366004610936565b6103f6565b61013f60075481565b6101956102053660046109a3565b610404565b60055461021d906001600160a01b031681565b6040516001600160a01b03909116815260200161010f565b61013f6102433660046109c7565b610453565b60606003805461025790610a00565b80601f016020809104026020016040519081016040528092919081815260200182805461028390610a00565b80156102d05780601f106102a5576101008083540402835291602001916102d0565b820191906000526020600020905b8154815290600101906020018083116102b357829003601f168201915b5050505050905090565b6000336102e881858561047e565b5060019392505050565b6000336103008582856105a2565b61030b85858561061c565b506001949350505050565b6000336102e88185856103298383610453565b6103339190610a3a565b61047e565b3361034257600080fd5b6005546001600160a01b0316331461035957600080fd5b61036382826107ea565b5050565b60606004805461025790610a00565b600033816103848286610453565b9050838110156103e95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61030b828686840361047e565b6000336102e881858561061c565b6006546001600160a01b0316331461041b57600080fd5b6005546001600160a01b03161561043157600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104e05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103e0565b6001600160a01b0382166105415760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103e0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006105ae8484610453565b9050600019811461061657818110156106095760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103e0565b610616848484840361047e565b50505050565b6001600160a01b0383166106805760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103e0565b6001600160a01b0382166106e25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103e0565b6001600160a01b0383166000908152602081905260409020548181101561075a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103e0565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610791908490610a3a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107dd91815260200190565b60405180910390a3610616565b6001600160a01b0382166108405760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103e0565b80600260008282546108529190610a3a565b90915550506001600160a01b0382166000908152602081905260408120805483929061087f908490610a3a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b818110156108f6578581018301518582016040015282016108da565b81811115610908576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461093357600080fd5b50565b6000806040838503121561094957600080fd5b82356109548161091e565b946020939093013593505050565b60008060006060848603121561097757600080fd5b83356109828161091e565b925060208401356109928161091e565b929592945050506040919091013590565b6000602082840312156109b557600080fd5b81356109c08161091e565b9392505050565b600080604083850312156109da57600080fd5b82356109e58161091e565b915060208301356109f58161091e565b809150509250929050565b600181811c90821680610a1457607f821691505b602082108103610a3457634e487b7160e01b600052602260045260246000fd5b50919050565b60008219821115610a5b57634e487b7160e01b600052601160045260246000fd5b50019056fea164736f6c634300080d000a",
    "sourceMap": "2329:519:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4433:197;;;;;;:::i;:::-;;:::i;:::-;;;1237:14:22;;1230:22;1212:41;;1200:2;1185:18;4433:197:1;1072:187:22;3244:106:1;3331:12;;3244:106;;;1410:25:22;;;1398:2;1383:18;3244:106:1;1264:177:22;5192:286:1;;;;;;:::i;:::-;;:::i;3093:91::-;;;3175:2;2049:36:22;;2037:2;2022:18;3093:91:1;1907:184:22;5873:234:1;;;;;;:::i;:::-;;:::i;2737:109:14:-;;;;;;:::i;:::-;;:::i;:::-;;3408:125:1;;;;;;:::i;:::-;-1:-1:-1;;;;;3508:18:1;3482:7;3508:18;;;;;;;;;;;;3408:125;2367:102;;;:::i;6594:427::-;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;237:36:17:-;;;;;;698:174:14;;;;;;:::i;:::-;;:::i;581:22::-;;;;;-1:-1:-1;;;;;581:22:14;;;;;;-1:-1:-1;;;;;2796:32:22;;;2778:51;;2766:2;2751:18;581:22:14;2616:219:22;3976:149:1;;;;;;:::i;:::-;;:::i;2156:98::-;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:9;4570:32:1;719:10:9;4586:7:1;4595:6;4570:8;:32::i;:::-;-1:-1:-1;4619:4:1;;4433:197;-1:-1:-1;;;4433:197:1:o;5192:286::-;5319:4;719:10:9;5375:38:1;5391:4;719:10:9;5406:6:1;5375:15;:38::i;:::-;5423:27;5433:4;5439:2;5443:6;5423:9;:27::i;:::-;-1:-1:-1;5467:4:1;;5192:286;-1:-1:-1;;;;5192:286:1:o;5873:234::-;5961:4;719:10:9;6015:64:1;719:10:9;6031:7:1;6068:10;6040:25;719:10:9;6031:7:1;6040:9;:25::i;:::-;:38;;;;:::i;:::-;6015:8;:64::i;2737:109:14:-;919:10;911:33;;;;;;984:7;;-1:-1:-1;;;;;984:7:14;962:10;:30;954:39;;;;;;2815:24:::1;2821:9;2832:6;2815:5;:24::i;:::-;2737:109:::0;;:::o;2367:102:1:-;2423:13;2455:7;2448:14;;;;;:::i;6594:427::-;6687:4;719:10:9;6687:4:1;6768:25;719:10:9;6785:7:1;6768:9;:25::i;:::-;6741:52;;6831:15;6811:16;:35;;6803:85;;;;-1:-1:-1;;;6803:85:1;;4050:2:22;6803:85:1;;;4032:21:22;4089:2;4069:18;;;4062:30;4128:34;4108:18;;;4101:62;-1:-1:-1;;;4179:18:22;;;4172:35;4224:19;;6803:85:1;;;;;;;;;6922:60;6931:5;6938:7;6966:15;6947:16;:34;6922:8;:60::i;3729:189::-;3808:4;719:10:9;3862:28:1;719:10:9;3879:2:1;3883:6;3862:9;:28::i;698:174:14:-;777:8;;-1:-1:-1;;;;;777:8:14;763:10;:22;755:31;;;;;;812:7;;-1:-1:-1;;;;;812:7:14;804:30;796:39;;;;;;845:7;:20;;-1:-1:-1;;;;;;845:20:14;-1:-1:-1;;;;;845:20:14;;;;;;;;;;698:174::o;3976:149:1:-;-1:-1:-1;;;;;4091:18:1;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149::o;10119:370::-;-1:-1:-1;;;;;10250:19:1;;10242:68;;;;-1:-1:-1;;;10242:68:1;;4456:2:22;10242:68:1;;;4438:21:22;4495:2;4475:18;;;4468:30;4534:34;4514:18;;;4507:62;-1:-1:-1;;;4585:18:22;;;4578:34;4629:19;;10242:68:1;4254:400:22;10242:68:1;-1:-1:-1;;;;;10328:21:1;;10320:68;;;;-1:-1:-1;;;10320:68:1;;4861:2:22;10320:68:1;;;4843:21:22;4900:2;4880:18;;;4873:30;4939:34;4919:18;;;4912:62;-1:-1:-1;;;4990:18:22;;;4983:32;5032:19;;10320:68:1;4659:398:22;10320:68:1;-1:-1:-1;;;;;10399:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10450:32;;1410:25:22;;;10450:32:1;;1383:18:22;10450:32:1;;;;;;;10119:370;;;:::o;10770:441::-;10900:24;10927:25;10937:5;10944:7;10927:9;:25::i;:::-;10900:52;;-1:-1:-1;;10966:16:1;:37;10962:243;;11047:6;11027:16;:26;;11019:68;;;;-1:-1:-1;;;11019:68:1;;5264:2:22;11019:68:1;;;5246:21:22;5303:2;5283:18;;;5276:30;5342:31;5322:18;;;5315:59;5391:18;;11019:68:1;5062:353:22;11019:68:1;11129:51;11138:5;11145:7;11173:6;11154:16;:25;11129:8;:51::i;:::-;10890:321;10770:441;;;:::o;7484:651::-;-1:-1:-1;;;;;7610:18:1;;7602:68;;;;-1:-1:-1;;;7602:68:1;;5622:2:22;7602:68:1;;;5604:21:22;5661:2;5641:18;;;5634:30;5700:34;5680:18;;;5673:62;-1:-1:-1;;;5751:18:22;;;5744:35;5796:19;;7602:68:1;5420:401:22;7602:68:1;-1:-1:-1;;;;;7688:16:1;;7680:64;;;;-1:-1:-1;;;7680:64:1;;6028:2:22;7680:64:1;;;6010:21:22;6067:2;6047:18;;;6040:30;6106:34;6086:18;;;6079:62;-1:-1:-1;;;6157:18:22;;;6150:33;6200:19;;7680:64:1;5826:399:22;7680:64:1;-1:-1:-1;;;;;7826:15:1;;7804:19;7826:15;;;;;;;;;;;7859:21;;;;7851:72;;;;-1:-1:-1;;;7851:72:1;;6432:2:22;7851:72:1;;;6414:21:22;6471:2;6451:18;;;6444:30;6510:34;6490:18;;;6483:62;-1:-1:-1;;;6561:18:22;;;6554:36;6607:19;;7851:72:1;6230:402:22;7851:72:1;-1:-1:-1;;;;;7957:15:1;;;:9;:15;;;;;;;;;;;7975:20;;;7957:38;;8015:13;;;;;;;;:23;;7989:6;;7957:9;8015:23;;7989:6;;8015:23;:::i;:::-;;;;;;;;8069:2;-1:-1:-1;;;;;8054:26:1;8063:4;-1:-1:-1;;;;;8054:26:1;;8073:6;8054:26;;;;1410:25:22;;1398:2;1383:18;;1264:177;8054:26:1;;;;;;;;8091:37;11795:121;8411:389;-1:-1:-1;;;;;8494:21:1;;8486:65;;;;-1:-1:-1;;;8486:65:1;;6839:2:22;8486:65:1;;;6821:21:22;6878:2;6858:18;;;6851:30;6917:33;6897:18;;;6890:61;6968:18;;8486:65:1;6637:355:22;8486:65:1;8638:6;8622:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8654:18:1;;:9;:18;;;;;;;;;;:28;;8676:6;;8654:9;:28;;8676:6;;8654:28;:::i;:::-;;;;-1:-1:-1;;8697:37:1;;1410:25:22;;;-1:-1:-1;;;;;8697:37:1;;;8714:1;;8697:37;;1398:2:22;1383:18;8697:37:1;;;;;;;2737:109:14;;:::o;14:597:22:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:22;574:15;-1:-1:-1;;570:29:22;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:22:o;616:131::-;-1:-1:-1;;;;;691:31:22;;681:42;;671:70;;737:1;734;727:12;671:70;616:131;:::o;752:315::-;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:22:o;1446:456::-;1523:6;1531;1539;1592:2;1580:9;1571:7;1567:23;1563:32;1560:52;;;1608:1;1605;1598:12;1560:52;1647:9;1634:23;1666:31;1691:5;1666:31;:::i;:::-;1716:5;-1:-1:-1;1773:2:22;1758:18;;1745:32;1786:33;1745:32;1786:33;:::i;:::-;1446:456;;1838:7;;-1:-1:-1;;;1892:2:22;1877:18;;;;1864:32;;1446:456::o;2096:247::-;2155:6;2208:2;2196:9;2187:7;2183:23;2179:32;2176:52;;;2224:1;2221;2214:12;2176:52;2263:9;2250:23;2282:31;2307:5;2282:31;:::i;:::-;2332:5;2096:247;-1:-1:-1;;;2096:247:22:o;2840:388::-;2908:6;2916;2969:2;2957:9;2948:7;2944:23;2940:32;2937:52;;;2985:1;2982;2975:12;2937:52;3024:9;3011:23;3043:31;3068:5;3043:31;:::i;:::-;3093:5;-1:-1:-1;3150:2:22;3135:18;;3122:32;3163:33;3122:32;3163:33;:::i;:::-;3215:7;3205:17;;;2840:388;;;;;:::o;3233:380::-;3312:1;3308:12;;;;3355;;;3376:61;;3430:4;3422:6;3418:17;3408:27;;3376:61;3483:2;3475:6;3472:14;3452:18;3449:38;3446:161;;3529:10;3524:3;3520:20;3517:1;3510:31;3564:4;3561:1;3554:15;3592:4;3589:1;3582:15;3446:161;;3233:380;;;:::o;3618:225::-;3658:3;3689:1;3685:6;3682:1;3679:13;3676:136;;;3734:10;3729:3;3725:20;3722:1;3715:31;3769:4;3766:1;3759:15;3797:4;3794:1;3787:15;3676:136;-1:-1:-1;3828:9:22;;3618:225::o",
    "linkReferences": {}
  },
  "userdoc": {
    "version": 1,
    "kind": "user",
    "methods": {
      "maxNewSupplyPerPeriod()": {
        "notice": "The % increase in supply allowed per period."
      }
    }
  },
  "devdoc": {
    "version": 1,
    "kind": "dev",
    "methods": {
      "allowance(address,address)": {
        "details": "See {IERC20-allowance}."
      },
      "approve(address,uint256)": {
        "details": "See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."
      },
      "balanceOf(address)": {
        "details": "See {IERC20-balanceOf}."
      },
      "decimals()": {
        "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
      },
      "decreaseAllowance(address,uint256)": {
        "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
      },
      "increaseAllowance(address,uint256)": {
        "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
      },
      "name()": {
        "details": "Returns the name of the token."
      },
      "symbol()": {
        "details": "Returns the symbol of the token, usually a shorter version of the name."
      },
      "totalSupply()": {
        "details": "See {IERC20-totalSupply}."
      },
      "transfer(address,uint256)": {
        "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."
      },
      "transferFrom(address,address,uint256)": {
        "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."
      }
    }
  },
  "ast": {
    "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/Tokens.sol",
    "exportedSymbols": {
      "Address": [
        2382
      ],
      "Association": [
        4902
      ],
      "Charter": [
        4538
      ],
      "CharterConfig": [
        2820
      ],
      "CharterGovernanceToken": [
        4801
      ],
      "CharterStakingToken": [
        4752
      ],
      "Context": [
        2404
      ],
      "ERC20": [
        690
      ],
      "ERC777": [
        1884
      ],
      "Founded": [
        4641
      ],
      "IERC1820Registry": [
        2494
      ],
      "IERC20": [
        768
      ],
      "IERC20Metadata": [
        793
      ],
      "IERC777": [
        2047
      ],
      "IERC777Recipient": [
        2067
      ],
      "IERC777Sender": [
        2087
      ],
      "Limited": [
        5242
      ],
      "Math": [
        5394
      ],
      "Member": [
        5043
      ],
      "Ownable": [
        104
      ],
      "TimeDelayStakingToken": [
        5769
      ],
      "TrialDeposit": [
        2831
      ]
    },
    "id": 4802,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 4540,
        "literals": [
          "solidity",
          "0.8",
          ".13"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:23:14"
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol",
        "file": "openzeppelin-contracts/contracts/token/ERC20/ERC20.sol",
        "id": 4541,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 691,
        "src": "57:64:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/token/ERC777/ERC777.sol",
        "file": "openzeppelin-contracts/contracts/token/ERC777/ERC777.sol",
        "id": 4542,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 1885,
        "src": "122:66:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/token/ERC777/IERC777Recipient.sol",
        "file": "openzeppelin-contracts/contracts/token/ERC777/IERC777Recipient.sol",
        "id": 4543,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 2068,
        "src": "189:76:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/access/Ownable.sol",
        "file": "openzeppelin-contracts/contracts/access/Ownable.sol",
        "id": 4544,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 105,
        "src": "266:61:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/Charter.sol",
        "file": "./Charter.sol",
        "id": 4545,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 4539,
        "src": "329:23:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/lib/Association.sol",
        "file": "./lib/Association.sol",
        "id": 4546,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 5044,
        "src": "353:31:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/lib/Stake.sol",
        "file": "./lib/Stake.sol",
        "id": 4547,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 5770,
        "src": "385:25:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/lib/Limited.sol",
        "file": "./lib/Limited.sol",
        "id": 4548,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 4802,
        "sourceUnit": 5243,
        "src": "411:27:14",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "Founded",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 4549,
          "nodeType": "StructuredDocumentation",
          "src": "440:118:14",
          "text": "@dev Allows a \"founder\" to create a contract and then\n surrender control over the contract once and only once."
        },
        "fullyImplemented": true,
        "id": 4641,
        "linearizedBaseContracts": [
          4641
        ],
        "name": "Founded",
        "nameLocation": "567:7:14",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "c1aadb4d",
            "id": 4552,
            "mutability": "mutable",
            "name": "charter",
            "nameLocation": "596:7:14",
            "nodeType": "VariableDeclaration",
            "scope": 4641,
            "src": "581:22:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Charter_$4538",
              "typeString": "contract Charter"
            },
            "typeName": {
              "id": 4551,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 4550,
                "name": "Charter",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 4538,
                "src": "581:7:14"
              },
              "referencedDeclaration": 4538,
              "src": "581:7:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Charter_$4538",
                "typeString": "contract Charter"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 4554,
            "mutability": "mutable",
            "name": "_founder",
            "nameLocation": "625:8:14",
            "nodeType": "VariableDeclaration",
            "scope": 4641,
            "src": "609:24:14",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 4553,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "609:7:14",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 4562,
              "nodeType": "Block",
              "src": "654:38:14",
              "statements": [
                {
                  "expression": {
                    "id": 4560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 4557,
                      "name": "_founder",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4554,
                      "src": "664:8:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 4558,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "675:3:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4559,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "675:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "664:21:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4561,
                  "nodeType": "ExpressionStatement",
                  "src": "664:21:14"
                }
              ]
            },
            "id": 4563,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4555,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "651:2:14"
            },
            "returnParameters": {
              "id": 4556,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "654:0:14"
            },
            "scope": 4641,
            "src": "640:52:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4592,
              "nodeType": "Block",
              "src": "745:127:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4573,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 4570,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "763:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "763:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 4572,
                          "name": "_founder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4554,
                          "src": "777:8:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "763:22:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4569,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "755:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4574,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "755:31:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4575,
                  "nodeType": "ExpressionStatement",
                  "src": "755:31:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4585,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 4579,
                              "name": "charter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4552,
                              "src": "812:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Charter_$4538",
                                "typeString": "contract Charter"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Charter_$4538",
                                "typeString": "contract Charter"
                              }
                            ],
                            "id": 4578,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "804:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4577,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "804:7:14",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "804:16:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 4583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "832:1:14",
                              "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": 4582,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "824:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4581,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "824:7:14",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "824:10:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "804:30:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4576,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "796:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4586,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "796:39:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4587,
                  "nodeType": "ExpressionStatement",
                  "src": "796:39:14"
                },
                {
                  "expression": {
                    "id": 4590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 4588,
                      "name": "charter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4552,
                      "src": "845:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Charter_$4538",
                        "typeString": "contract Charter"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 4589,
                      "name": "newCharter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4566,
                      "src": "855:10:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Charter_$4538",
                        "typeString": "contract Charter"
                      }
                    },
                    "src": "845:20:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Charter_$4538",
                      "typeString": "contract Charter"
                    }
                  },
                  "id": 4591,
                  "nodeType": "ExpressionStatement",
                  "src": "845:20:14"
                }
              ]
            },
            "functionSelector": "b94ed2d1",
            "id": 4593,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setCharter",
            "nameLocation": "707:10:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4567,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4566,
                  "mutability": "mutable",
                  "name": "newCharter",
                  "nameLocation": "726:10:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4593,
                  "src": "718:18:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Charter_$4538",
                    "typeString": "contract Charter"
                  },
                  "typeName": {
                    "id": 4565,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4564,
                      "name": "Charter",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4538,
                      "src": "718:7:14"
                    },
                    "referencedDeclaration": 4538,
                    "src": "718:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Charter_$4538",
                      "typeString": "contract Charter"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "717:20:14"
            },
            "returnParameters": {
              "id": 4568,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "745:0:14"
            },
            "scope": 4641,
            "src": "698:174:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4616,
              "nodeType": "Block",
              "src": "901:111:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 4596,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "919:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "919:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 4600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "941:1:14",
                              "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": 4599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "933:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4598,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "933:7:14",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "933:10:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "919:24:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4595,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "911:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "911:33:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4604,
                  "nodeType": "ExpressionStatement",
                  "src": "911:33:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4612,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 4606,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "962:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "962:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 4610,
                              "name": "charter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4552,
                              "src": "984:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Charter_$4538",
                                "typeString": "contract Charter"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Charter_$4538",
                                "typeString": "contract Charter"
                              }
                            ],
                            "id": 4609,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "976:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4608,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "976:7:14",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4611,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "976:16:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "962:30:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4605,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "954:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "954:39:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4614,
                  "nodeType": "ExpressionStatement",
                  "src": "954:39:14"
                },
                {
                  "id": 4615,
                  "nodeType": "PlaceholderStatement",
                  "src": "1004:1:14"
                }
              ]
            },
            "id": 4617,
            "name": "onlyCharter",
            "nameLocation": "887:11:14",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 4594,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "898:2:14"
            },
            "src": "878:134:14",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4639,
              "nodeType": "Block",
              "src": "1046:110:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 4620,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1064:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1064:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 4624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1086:1:14",
                              "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": 4623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1078:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4622,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1078:7:14",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1078:10:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1064:24:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4619,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1056:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1056:33:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4628,
                  "nodeType": "ExpressionStatement",
                  "src": "1056:33:14"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 4630,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1107:3:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1107:10:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 4632,
                              "name": "charter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4552,
                              "src": "1121:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Charter_$4538",
                                "typeString": "contract Charter"
                              }
                            },
                            "id": 4633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 32,
                            "src": "1121:13:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 4634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1121:15:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1107:29:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4629,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1099:7:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 4636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1099:38:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4637,
                  "nodeType": "ExpressionStatement",
                  "src": "1099:38:14"
                },
                {
                  "id": 4638,
                  "nodeType": "PlaceholderStatement",
                  "src": "1148:1:14"
                }
              ]
            },
            "id": 4640,
            "name": "onlyCharterOwner",
            "nameLocation": "1027:16:14",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 4618,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1043:2:14"
            },
            "src": "1018:138:14",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 4802,
        "src": "558:600:14",
        "usedErrors": []
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 4642,
              "name": "TimeDelayStakingToken",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5769,
              "src": "1192:21:14"
            },
            "id": 4643,
            "nodeType": "InheritanceSpecifier",
            "src": "1192:21:14"
          },
          {
            "baseName": {
              "id": 4644,
              "name": "Founded",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4641,
              "src": "1215:7:14"
            },
            "id": 4645,
            "nodeType": "InheritanceSpecifier",
            "src": "1215:7:14"
          },
          {
            "baseName": {
              "id": 4646,
              "name": "Limited",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5242,
              "src": "1224:7:14"
            },
            "id": 4647,
            "nodeType": "InheritanceSpecifier",
            "src": "1224:7:14"
          }
        ],
        "canonicalName": "CharterStakingToken",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 4752,
        "linearizedBaseContracts": [
          4752,
          5242,
          4641,
          5769,
          5394,
          2067,
          1884,
          768,
          2047,
          2404
        ],
        "name": "CharterStakingToken",
        "nameLocation": "1169:19:14",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 4690,
              "nodeType": "Block",
              "src": "1661:57:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 4683,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "1677:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4684,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "1677:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4685,
                        "name": "initialSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4657,
                        "src": "1689:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 4686,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1704:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "hexValue": "",
                        "id": 4687,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1708:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 4682,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1370,
                        1450
                      ],
                      "referencedDeclaration": 1370,
                      "src": "1671:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,bytes memory,bytes memory)"
                      }
                    },
                    "id": 4688,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1671:40:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4689,
                  "nodeType": "ExpressionStatement",
                  "src": "1671:40:14"
                }
              ]
            },
            "id": 4691,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 4662,
                    "name": "withdraw",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4653,
                    "src": "1461:8:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "id": 4663,
                    "name": "period",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4655,
                    "src": "1471:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 4664,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4661,
                  "name": "TimeDelayStakingToken",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5769,
                  "src": "1439:21:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1439:39:14"
              },
              {
                "arguments": [
                  {
                    "id": 4666,
                    "name": "name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4649,
                    "src": "1494:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "id": 4667,
                    "name": "symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4651,
                    "src": "1500:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "arguments": [
                      {
                        "hexValue": "30",
                        "id": 4671,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1522:1:14",
                        "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": 4670,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1508:13:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4668,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1512:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4669,
                        "nodeType": "ArrayTypeName",
                        "src": "1512:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 4672,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1508:16:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  }
                ],
                "id": 4673,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4665,
                  "name": "ERC777",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1884,
                  "src": "1487:6:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1487:38:14"
              },
              {
                "arguments": [],
                "id": 4675,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4674,
                  "name": "Founded",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4641,
                  "src": "1534:7:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1534:9:14"
              },
              {
                "arguments": [
                  {
                    "id": 4677,
                    "name": "initialSupply",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4657,
                    "src": "1573:13:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "id": 4678,
                    "name": "maxInflationPerDay",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4659,
                    "src": "1600:18:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "hexValue": "3836343030",
                    "id": 4679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1632:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_86400_by_1",
                      "typeString": "int_const 86400"
                    },
                    "value": "86400"
                  }
                ],
                "id": 4680,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4676,
                  "name": "Limited",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5242,
                  "src": "1552:7:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1552:104:14"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4660,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4649,
                  "mutability": "mutable",
                  "name": "name",
                  "nameLocation": "1273:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1259:18:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4648,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1259:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4651,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nameLocation": "1301:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1287:20:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4650,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1287:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4653,
                  "mutability": "mutable",
                  "name": "withdraw",
                  "nameLocation": "1325:8:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1317:16:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4652,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1317:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4655,
                  "mutability": "mutable",
                  "name": "period",
                  "nameLocation": "1351:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1343:14:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4654,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1343:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4657,
                  "mutability": "mutable",
                  "name": "initialSupply",
                  "nameLocation": "1375:13:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1367:21:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4656,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1367:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4659,
                  "mutability": "mutable",
                  "name": "maxInflationPerDay",
                  "nameLocation": "1406:18:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4691,
                  "src": "1398:26:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4658,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1398:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1249:181:14"
            },
            "returnParameters": {
              "id": 4681,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1661:0:14"
            },
            "scope": 4752,
            "src": "1238:480:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4705,
              "nodeType": "Block",
              "src": "1787:37:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4701,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4693,
                        "src": "1804:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4702,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4695,
                        "src": "1810:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 4700,
                      "name": "_slash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5768,
                      "src": "1797:6:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint64_$returns$__$",
                        "typeString": "function (address,uint64)"
                      }
                    },
                    "id": 4703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1797:20:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4704,
                  "nodeType": "ExpressionStatement",
                  "src": "1797:20:14"
                }
              ]
            },
            "functionSelector": "83f684a4",
            "id": 4706,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4698,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4697,
                  "name": "onlyCharter",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4617,
                  "src": "1775:11:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1775:11:14"
              }
            ],
            "name": "slash",
            "nameLocation": "1733:5:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4696,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4693,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "1747:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4706,
                  "src": "1739:12:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4692,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1739:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4695,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1760:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4706,
                  "src": "1753:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 4694,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1753:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1738:29:14"
            },
            "returnParameters": {
              "id": 4699,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1787:0:14"
            },
            "scope": 4752,
            "src": "1724:100:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4726,
              "nodeType": "Block",
              "src": "1890:83:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4716,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4708,
                        "src": "1906:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4718,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 991,
                              "src": "1935:11:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                "typeString": "function () view returns (uint256)"
                              }
                            },
                            "id": 4719,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1935:13:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 4720,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4710,
                            "src": "1950:6:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 4717,
                          "name": "_cappedNewSupplyToCreate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5241,
                          "src": "1910:24:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256) returns (uint256)"
                          }
                        },
                        "id": 4721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1910:47:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 4722,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1959:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "hexValue": "",
                        "id": 4723,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1963:2:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 4715,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1370,
                        1450
                      ],
                      "referencedDeclaration": 1370,
                      "src": "1900:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,bytes memory,bytes memory)"
                      }
                    },
                    "id": 4724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1900:66:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4725,
                  "nodeType": "ExpressionStatement",
                  "src": "1900:66:14"
                }
              ]
            },
            "functionSelector": "2893c5b0",
            "id": 4727,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4713,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4712,
                  "name": "onlyCharter",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4617,
                  "src": "1878:11:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "1878:11:14"
              }
            ],
            "name": "mint",
            "nameLocation": "1839:4:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4711,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4708,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "1852:2:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4727,
                  "src": "1844:10:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4707,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1844:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4710,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1863:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4727,
                  "src": "1856:13:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 4709,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1856:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1843:27:14"
            },
            "returnParameters": {
              "id": 4714,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1890:0:14"
            },
            "scope": 4752,
            "src": "1830:143:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4738,
              "nodeType": "Block",
              "src": "2093:70:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4735,
                        "name": "newStakeWithdrawPerPeriod",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4729,
                        "src": "2130:25:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4734,
                      "name": "_setStakeWithdrawPerPeriod",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5528,
                      "src": "2103:26:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 4736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2103:53:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4737,
                  "nodeType": "ExpressionStatement",
                  "src": "2103:53:14"
                }
              ]
            },
            "functionSelector": "8061766e",
            "id": 4739,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4732,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4731,
                  "name": "onlyCharterOwner",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4640,
                  "src": "2072:16:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "2072:16:14"
              }
            ],
            "name": "setStakeWithdrawPerPeriod",
            "nameLocation": "1988:25:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4730,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4729,
                  "mutability": "mutable",
                  "name": "newStakeWithdrawPerPeriod",
                  "nameLocation": "2022:25:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4739,
                  "src": "2014:33:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4728,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2014:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2013:35:14"
            },
            "returnParameters": {
              "id": 4733,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2093:0:14"
            },
            "scope": 4752,
            "src": "1979:184:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4750,
              "nodeType": "Block",
              "src": "2269:56:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4747,
                        "name": "newPeriodInSeconds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4741,
                        "src": "2299:18:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4746,
                      "name": "_setPeriodInSeconds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5550,
                      "src": "2279:19:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 4748,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2279:39:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4749,
                  "nodeType": "ExpressionStatement",
                  "src": "2279:39:14"
                }
              ]
            },
            "functionSelector": "d3700604",
            "id": 4751,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4744,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4743,
                  "name": "onlyCharterOwner",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4640,
                  "src": "2248:16:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "2248:16:14"
              }
            ],
            "name": "setPeriodInSeconds",
            "nameLocation": "2178:18:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4741,
                  "mutability": "mutable",
                  "name": "newPeriodInSeconds",
                  "nameLocation": "2205:18:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4751,
                  "src": "2197:26:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4740,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2197:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2196:28:14"
            },
            "returnParameters": {
              "id": 4745,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2269:0:14"
            },
            "scope": 4752,
            "src": "2169:156:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 4802,
        "src": "1160:1167:14",
        "usedErrors": []
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 4753,
              "name": "ERC20",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 690,
              "src": "2364:5:14"
            },
            "id": 4754,
            "nodeType": "InheritanceSpecifier",
            "src": "2364:5:14"
          },
          {
            "baseName": {
              "id": 4755,
              "name": "Founded",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4641,
              "src": "2371:7:14"
            },
            "id": 4756,
            "nodeType": "InheritanceSpecifier",
            "src": "2371:7:14"
          },
          {
            "baseName": {
              "id": 4757,
              "name": "Limited",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5242,
              "src": "2380:7:14"
            },
            "id": 4758,
            "nodeType": "InheritanceSpecifier",
            "src": "2380:7:14"
          }
        ],
        "canonicalName": "CharterGovernanceToken",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 4801,
        "linearizedBaseContracts": [
          4801,
          5242,
          5394,
          4641,
          690,
          793,
          768,
          2404
        ],
        "name": "CharterGovernanceToken",
        "nameLocation": "2338:22:14",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 4784,
              "nodeType": "Block",
              "src": "2682:49:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 4779,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "2698:3:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4780,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2698:10:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4781,
                        "name": "initialSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4764,
                        "src": "2710:13:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4778,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 507,
                      "src": "2692:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 4782,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2692:32:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4783,
                  "nodeType": "ExpressionStatement",
                  "src": "2692:32:14"
                }
              ]
            },
            "id": 4785,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 4769,
                    "name": "name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4760,
                    "src": "2551:4:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "id": 4770,
                    "name": "symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4762,
                    "src": "2557:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 4771,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4768,
                  "name": "ERC20",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 690,
                  "src": "2545:5:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "2545:19:14"
              },
              {
                "arguments": [
                  {
                    "id": 4773,
                    "name": "initialSupply",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4764,
                    "src": "2594:13:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "id": 4774,
                    "name": "maxInflationPerDay",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4766,
                    "src": "2621:18:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "hexValue": "3836343030",
                    "id": 4775,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2653:5:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_86400_by_1",
                      "typeString": "int_const 86400"
                    },
                    "value": "86400"
                  }
                ],
                "id": 4776,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 4772,
                  "name": "Limited",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5242,
                  "src": "2573:7:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "2573:104:14"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4767,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4760,
                  "mutability": "mutable",
                  "name": "name",
                  "nameLocation": "2429:4:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4785,
                  "src": "2415:18:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4759,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2415:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4762,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nameLocation": "2457:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4785,
                  "src": "2443:20:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4761,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2443:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4764,
                  "mutability": "mutable",
                  "name": "initialSupply",
                  "nameLocation": "2481:13:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4785,
                  "src": "2473:21:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4763,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2473:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4766,
                  "mutability": "mutable",
                  "name": "maxInflationPerDay",
                  "nameLocation": "2512:18:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4785,
                  "src": "2504:26:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4765,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2504:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2405:131:14"
            },
            "returnParameters": {
              "id": 4777,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2682:0:14"
            },
            "scope": 4801,
            "src": "2394:337:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4799,
              "nodeType": "Block",
              "src": "2805:41:14",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 4795,
                        "name": "recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4787,
                        "src": "2821:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 4796,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4789,
                        "src": "2832:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4794,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 507,
                      "src": "2815:5:14",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 4797,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2815:24:14",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4798,
                  "nodeType": "ExpressionStatement",
                  "src": "2815:24:14"
                }
              ]
            },
            "functionSelector": "40c10f19",
            "id": 4800,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 4792,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 4791,
                  "name": "onlyCharter",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4617,
                  "src": "2793:11:14"
                },
                "nodeType": "ModifierInvocation",
                "src": "2793:11:14"
              }
            ],
            "name": "mint",
            "nameLocation": "2746:4:14",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 4790,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4787,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nameLocation": "2759:9:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4800,
                  "src": "2751:17:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4786,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2751:7:14",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4789,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "2778:6:14",
                  "nodeType": "VariableDeclaration",
                  "scope": 4800,
                  "src": "2770:14:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4788,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2770:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2750:35:14"
            },
            "returnParameters": {
              "id": 4793,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2805:0:14"
            },
            "scope": 4801,
            "src": "2737:109:14",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 4802,
        "src": "2329:519:14",
        "usedErrors": []
      }
    ],
    "src": "32:2817:14"
  }
}