{
  "contractName": "SecurityTokenSale",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_startTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_endTime",
          "type": "uint256"
        },
        {
          "internalType": "contract Token",
          "name": "_securityToken",
          "type": "address"
        },
        {
          "internalType": "contract MarineCoin",
          "name": "_marineToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tokenPrice",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_identityRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_buyer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "Sell",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "endTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "marineToken",
      "outputs": [
        {
          "internalType": "contract MarineCoin",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "securityToken",
      "outputs": [
        {
          "internalType": "contract Token",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenIdentityRegistry",
      "outputs": [
        {
          "internalType": "contract IIdentityRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokensSold",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_numberOfTokens",
          "type": "uint256"
        }
      ],
      "name": "buyTokens",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "endSale",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "setAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_endTime\",\"type\":\"uint256\"},{\"internalType\":\"contract Token\",\"name\":\"_securityToken\",\"type\":\"address\"},{\"internalType\":\"contract MarineCoin\",\"name\":\"_marineToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenPrice\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_identityRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_buyer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Sell\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_numberOfTokens\",\"type\":\"uint256\"}],\"name\":\"buyTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endSale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"marineToken\",\"outputs\":[{\"internalType\":\"contract MarineCoin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"securityToken\",\"outputs\":[{\"internalType\":\"contract Token\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenIdentityRegistry\",\"outputs\":[{\"internalType\":\"contract IIdentityRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokensSold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/SecurityTokenSale/SecurityTokenSale.sol\":\"SecurityTokenSale\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10},\"remappings\":[]},\"sources\":{\"@onchain-id/solidity/contracts/interface/IClaimIssuer.sol\":{\"keccak256\":\"0xd0493be7cb7342962b46f8e2afdca4614ea0fe34a7f493b2da9db7d361a9042c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://105232aae24e3d0fcb4c80c00793b61b6019f6127c0ec6f9e3082ae01b2e778b\",\"dweb:/ipfs/QmV5C1wbq7H5H6DiakafSX5agAAP6rQSZ5qq7Qgq6VLkXo\"]},\"@onchain-id/solidity/contracts/interface/IERC734.sol\":{\"keccak256\":\"0x3302de9e9fe7a548cb7395b6fda38f952f6a6d1c599dfeee181a1ef80741fc1d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fc9f00e5b2f1523fecf52b1a833e9263a53edbebb7d1458f9004cfd41dd0402e\",\"dweb:/ipfs/QmWcNcVQrg66KeQz39jPgJun7jF3CbdJKHQa19q97n5Hzb\"]},\"@onchain-id/solidity/contracts/interface/IERC735.sol\":{\"keccak256\":\"0x3b77ce6012a96cf0075197cdeb1b98b66ca1722ef23241e40ba6185f03bf4584\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://766e139f0c3cc0c6489561e75df0d8eab8c277f90009e4fa19add4f22bb40d82\",\"dweb:/ipfs/QmcbAReZn9nLcnYn9AHiDmcYJ42JqAU5QSy4dKhUcJUnjy\"]},\"@onchain-id/solidity/contracts/interface/IIdentity.sol\":{\"keccak256\":\"0xdcefbe2a850f9f43e959b9f7ed93fd5b35f29ff3dfbfaac7530af737c9eba7c6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://2e887c7cc67fdb2710c48bed22dbb27880f6dfb84ee93178ad4fcd659099cb96\",\"dweb:/ipfs/QmUuDEsZJC7uQQEErmuNJzePsNgHiTDdS2TuMzG1GRqrC3\"]},\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/security/Pausable.sol\":{\"keccak256\":\"0x0849d93b16c9940beb286a7864ed02724b248b93e0d80ef6355af5ef15c64773\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ddabb16009cd17eaca3143feadf450ac13e72919ebe2ca50e00f61cb78bc004\",\"dweb:/ipfs/QmSPwPxX7d6TTWakN5jy5wsaGkS1y9TW8fuhGSraMkLk2B\"]},\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0\",\"dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"project:/contracts/MarineCoin.sol\":{\"keccak256\":\"0x07a7a7b884f02d0f745f93a43c3e76a1afa53b29f8b5295cb468f2c3b3d72831\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://41ee0b5a830d6ab86b1b554dc131924aae5789486b2ec3571b7f2d90004df871\",\"dweb:/ipfs/QmZ4zBGrRkDWT6WURCDnpPZybE4f19WVnFGtx8ukPRYTVV\"]},\"project:/contracts/SecurityTokenSale/SecurityTokenSale.sol\":{\"keccak256\":\"0x40de87fffa67ceed90026b8ee670f91de5254101e04735f49e35f023dd617707\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d867972a8cc0f967921c2a6a8c23efd79fae80ff395b65a74d4f656b90ec7be3\",\"dweb:/ipfs/QmaKgGsDukchkRrym311obM1ByvL9Su5nyidH61iGJUw6j\"]},\"project:/contracts/compliance/ICompliance.sol\":{\"keccak256\":\"0x4049905b34eab118c0c3f644450299a5ed8022bbbdb26036e7c2854dae8ae1ba\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f8144953d88f543b2f537514f1136b8adf705837ba6d420b95569f6895153edb\",\"dweb:/ipfs/QmRqM7A6XrofFR67k8RtNNEkriAbKsQHDgUYaKZTMr9Nm5\"]},\"project:/contracts/registry/IClaimTopicsRegistry.sol\":{\"keccak256\":\"0x95f8fa17a716771125b203f00890eceb20ac3807f7a39a25b644427b1ff81d61\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://460dceb9e88957d5ce002b80748767c80a7e146c9b38b055a3c1ca04586b2009\",\"dweb:/ipfs/QmVdqEpGMRzSpLKBCtPzaPGatBgUyNm3NS5rQnkkYMnc1C\"]},\"project:/contracts/registry/IIdentityRegistry.sol\":{\"keccak256\":\"0x16a31f2d35143f99cc6b83d0cf6e9da9543c2b8561712079098f3a39d12ae32a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7669a9272b1df8e27e0fc3f5f64977b2b16615e585b673383db1eb157a62bf7c\",\"dweb:/ipfs/QmQzXmoFcFyBPehPyiUzGjaKfXJHLEPZMtFTBTgjuCavah\"]},\"project:/contracts/registry/IIdentityRegistryStorage.sol\":{\"keccak256\":\"0x8cd4de1e77c5da8ca2ff732069bc184aef86bcb94f95a5229e5bd6336abbd06d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f88894a3d046940be03a12cc2da3b3fb6efb51e0461fbea060a9a3190cadcf16\",\"dweb:/ipfs/QmNndZUPdpc83A9LungeAsrcencq3CzTum1tkU6KVdSRNC\"]},\"project:/contracts/registry/ITrustedIssuersRegistry.sol\":{\"keccak256\":\"0x01af20f2f537db3122c60b7c6e60e5036e07c673ef9762428b42129f65fcbc60\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://28f514b876c975777fe84bdb9f96ec5c687e4e4ff5d2b14961ba61affc57d46c\",\"dweb:/ipfs/QmdbVRsg1Q71PVHYxy1r7e5MeiMN5hHHDD8vRnXBSr8JiV\"]},\"project:/contracts/roles/AgentRoleUpgradeable.sol\":{\"keccak256\":\"0xe19da0daf8a0c29fc5df7e30f66948d57549e58a678b7bd47b4525104084ff81\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://aef968c1f1ac0af55e5c3fa8eb7f8256b0dc9c3ac9bebac951de23cf0206c5f9\",\"dweb:/ipfs/QmbkfpqVvJbd2zjkh5CWa4uQgtQygJn7unA5PTzCGATniK\"]},\"project:/contracts/roles/Roles.sol\":{\"keccak256\":\"0x9e018cafd4e2a2890d4ed32f0a4e5edf92fe95000f35b15d7932890bd0efdb95\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6c07fd269689b662d782817bc4fdfc00d33fd7e320c20916528fff7853847954\",\"dweb:/ipfs/QmUz39kdgQM8M2W2gcBZ8Vi3mzzSmXUx9NXxTJatYYQJyw\"]},\"project:/contracts/token/IToken.sol\":{\"keccak256\":\"0x34ce3cabab2f6b66aeb4e89fe8e9952b8aa57663e7b33429963169a835fc1f25\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://cffd212e911fd0a6a402d5438e5f5da0c1637226bfcab173a7c58efba12f2655\",\"dweb:/ipfs/QmVbqFNczrUAETfAX6F9MxXKivALRvt1HBTMhrjAKWHniq\"]},\"project:/contracts/token/Storage.sol\":{\"keccak256\":\"0x15ddd5f8ee0881bf07137cd04ef9d529b2bf8acb006db3c2b451be5ae07ac71c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://09c5d5ef2d9818a431fe3d05024ac03040ec9ca51d9eb43f452f388a9d282025\",\"dweb:/ipfs/QmSUHCthksYjJeoWLTm1Car1zoVHJPKSvuQZEe9YHMCNJw\"]},\"project:/contracts/token/Token.sol\":{\"keccak256\":\"0x6d31369f226850078d31303c0c6071767164a1af0b97cb9d65ae6bdc8410b6a3\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://eaaac98375ae921d2bf809076c1ebbf7a677abf43ae20d8cd6d02c41e513ba12\",\"dweb:/ipfs/QmU6XVbaj8oCYbUGNes5XAa6VaPoKpEpAQ2gxPMV28DHgE\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50604051610cc6380380610cc683398101604081905261002f91610117565b60016000819055805460ff19169055610047336100a5565b60079590955560089390935560028054336001600160a01b0319918216179091556004805482166001600160a01b03938416179055600380548216938316939093179092556005929092556009805490911691909216179055610180565b600180546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038116811461011457600080fd5b50565b60008060008060008060c0878903121561013057600080fd5b86519550602087015194506040870151610149816100ff565b606088015190945061015a816100ff565b608088015160a08901519194509250610172816100ff565b809150509295509295509295565b610b378061018f6000396000f3fe6080604052600436106100ad5760003560e01c80632cae2096146100b25780633197cbb6146100c95780633610724e146100f2578063380d831b14610105578063430b62521461011a578063518ab2a8146101475780635c975abb1461015d578063715018a61461018057806378e97925146101955780637ff9b596146101ab57806382eb9f28146101c15780638da5cb5b146101e1578063b84dfbd2146101f6578063f2fde38b14610216575b600080fd5b3480156100be57600080fd5b506100c7610236565b005b3480156100d557600080fd5b506100df60085481565b6040519081526020015b60405180910390f35b6100c76101003660046109e5565b610252565b34801561011157600080fd5b506100c76106fe565b34801561012657600080fd5b5060045461013a906001600160a01b031681565b6040516100e991906109fe565b34801561015357600080fd5b506100df60065481565b34801561016957600080fd5b5060015460ff1660405190151581526020016100e9565b34801561018c57600080fd5b506100c7610812565b3480156101a157600080fd5b506100df60075481565b3480156101b757600080fd5b506100df60055481565b3480156101cd57600080fd5b5060095461013a906001600160a01b031681565b3480156101ed57600080fd5b5061013a610826565b34801561020257600080fd5b5060035461013a906001600160a01b031681565b34801561022257600080fd5b506100c7610231366004610a12565b61083a565b61023e6108b3565b600280546001600160a01b03191633179055565b6002600054036102a95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000556102b6610912565b60006102c482600554610958565b600480546040516370a0823160e01b815292935083926001600160a01b03909116916370a08231916102f8913391016109fe565b602060405180830381865afa158015610315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103399190610a42565b101561039b5760405162461bcd60e51b815260206004820152602b60248201527f6e6f7420656e6f756768204d6172696e6520436f696e20746f20636f7665722060448201526a034ba32b690383934b1b2960ad1b60648201526084016102a0565b60048054604051636eb1769f60e11b8152339281019290925230602483015282916001600160a01b039091169063dd62ed3e90604401602060405180830381865afa1580156103ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104129190610a42565b10156104765760405162461bcd60e51b815260206004820152602d60248201527f6e6f7420656e6f756768204d6172696e6520436f696e20746f2062757920736560448201526c63757269747920546f6b656e7360981b60648201526084016102a0565b60095460405163b9209e3360e01b81526001600160a01b039091169063b9209e33906104a69033906004016109fe565b602060405180830381865afa1580156104c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e79190610a5b565b61052f5760405162461bcd60e51b815260206004820152601960248201527824b232b73a34ba3c9034b9903737ba103b32b934b334b2b21760391b60448201526064016102a0565b60085442111561056d5760405162461bcd60e51b815260206004820152600960248201526814d513c8195b99195960ba1b60448201526064016102a0565b6007544210156105b15760405162461bcd60e51b815260206004820152600f60248201526e14d513c81b9bdd081cdd185c9d1959608a1b60448201526064016102a0565b6004546002546001600160a01b03918216916323b872dd913391166105de85670de0b6b3a7640000610a7d565b6040518463ffffffff1660e01b81526004016105fc93929190610aa2565b6020604051808303816000875af115801561061b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063f9190610a5b565b506003546002546040516323b872dd60e01b81526001600160a01b03928316926323b872dd926106789291169033908790600401610aa2565b6020604051808303816000875af1158015610697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bb9190610a5b565b507f5e5e995ce3133561afceaa51a9a154d5db228cd7525d34df5185582c18d3df0933836040516106ed929190610ac6565b60405180910390a150506001600055565b6107066108b3565b6002546001600160a01b0316331461071d57600080fd5b6003546002546040516370a0823160e01b81526001600160a01b039283169263a9059cbb92169083906370a082319061075a9030906004016109fe565b602060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b9190610a42565b6040518363ffffffff1660e01b81526004016107b8929190610ac6565b6020604051808303816000875af11580156107d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb9190610a5b565b61080457600080fd5b6002546001600160a01b0316ff5b61081a6108b3565b610824600061098b565b565b60015461010090046001600160a01b031690565b6108426108b3565b6001600160a01b0381166108a75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102a0565b6108b08161098b565b50565b336108bc610826565b6001600160a01b0316146108245760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102a0565b60015460ff16156108245760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016102a0565b600081158061097c5750828261096e8183610a7d565b925061097a9083610adf565b145b61098557600080fd5b92915050565b600180546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156109f757600080fd5b5035919050565b6001600160a01b0391909116815260200190565b600060208284031215610a2457600080fd5b81356001600160a01b0381168114610a3b57600080fd5b9392505050565b600060208284031215610a5457600080fd5b5051919050565b600060208284031215610a6d57600080fd5b81518015158114610a3b57600080fd5b808202811582820484141761098557634e487b7160e01b600052601160045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b600082610afc57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220dcdbf5f58690e56578cd4d674696f93db2fefcf8bbbd49cc4c7cb07b9ac73eb264736f6c63430008110033",
  "deployedBytecode": "0x6080604052600436106100ad5760003560e01c80632cae2096146100b25780633197cbb6146100c95780633610724e146100f2578063380d831b14610105578063430b62521461011a578063518ab2a8146101475780635c975abb1461015d578063715018a61461018057806378e97925146101955780637ff9b596146101ab57806382eb9f28146101c15780638da5cb5b146101e1578063b84dfbd2146101f6578063f2fde38b14610216575b600080fd5b3480156100be57600080fd5b506100c7610236565b005b3480156100d557600080fd5b506100df60085481565b6040519081526020015b60405180910390f35b6100c76101003660046109e5565b610252565b34801561011157600080fd5b506100c76106fe565b34801561012657600080fd5b5060045461013a906001600160a01b031681565b6040516100e991906109fe565b34801561015357600080fd5b506100df60065481565b34801561016957600080fd5b5060015460ff1660405190151581526020016100e9565b34801561018c57600080fd5b506100c7610812565b3480156101a157600080fd5b506100df60075481565b3480156101b757600080fd5b506100df60055481565b3480156101cd57600080fd5b5060095461013a906001600160a01b031681565b3480156101ed57600080fd5b5061013a610826565b34801561020257600080fd5b5060035461013a906001600160a01b031681565b34801561022257600080fd5b506100c7610231366004610a12565b61083a565b61023e6108b3565b600280546001600160a01b03191633179055565b6002600054036102a95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000556102b6610912565b60006102c482600554610958565b600480546040516370a0823160e01b815292935083926001600160a01b03909116916370a08231916102f8913391016109fe565b602060405180830381865afa158015610315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103399190610a42565b101561039b5760405162461bcd60e51b815260206004820152602b60248201527f6e6f7420656e6f756768204d6172696e6520436f696e20746f20636f7665722060448201526a034ba32b690383934b1b2960ad1b60648201526084016102a0565b60048054604051636eb1769f60e11b8152339281019290925230602483015282916001600160a01b039091169063dd62ed3e90604401602060405180830381865afa1580156103ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104129190610a42565b10156104765760405162461bcd60e51b815260206004820152602d60248201527f6e6f7420656e6f756768204d6172696e6520436f696e20746f2062757920736560448201526c63757269747920546f6b656e7360981b60648201526084016102a0565b60095460405163b9209e3360e01b81526001600160a01b039091169063b9209e33906104a69033906004016109fe565b602060405180830381865afa1580156104c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e79190610a5b565b61052f5760405162461bcd60e51b815260206004820152601960248201527824b232b73a34ba3c9034b9903737ba103b32b934b334b2b21760391b60448201526064016102a0565b60085442111561056d5760405162461bcd60e51b815260206004820152600960248201526814d513c8195b99195960ba1b60448201526064016102a0565b6007544210156105b15760405162461bcd60e51b815260206004820152600f60248201526e14d513c81b9bdd081cdd185c9d1959608a1b60448201526064016102a0565b6004546002546001600160a01b03918216916323b872dd913391166105de85670de0b6b3a7640000610a7d565b6040518463ffffffff1660e01b81526004016105fc93929190610aa2565b6020604051808303816000875af115801561061b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063f9190610a5b565b506003546002546040516323b872dd60e01b81526001600160a01b03928316926323b872dd926106789291169033908790600401610aa2565b6020604051808303816000875af1158015610697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bb9190610a5b565b507f5e5e995ce3133561afceaa51a9a154d5db228cd7525d34df5185582c18d3df0933836040516106ed929190610ac6565b60405180910390a150506001600055565b6107066108b3565b6002546001600160a01b0316331461071d57600080fd5b6003546002546040516370a0823160e01b81526001600160a01b039283169263a9059cbb92169083906370a082319061075a9030906004016109fe565b602060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b9190610a42565b6040518363ffffffff1660e01b81526004016107b8929190610ac6565b6020604051808303816000875af11580156107d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb9190610a5b565b61080457600080fd5b6002546001600160a01b0316ff5b61081a6108b3565b610824600061098b565b565b60015461010090046001600160a01b031690565b6108426108b3565b6001600160a01b0381166108a75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102a0565b6108b08161098b565b50565b336108bc610826565b6001600160a01b0316146108245760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102a0565b60015460ff16156108245760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016102a0565b600081158061097c5750828261096e8183610a7d565b925061097a9083610adf565b145b61098557600080fd5b92915050565b600180546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156109f757600080fd5b5035919050565b6001600160a01b0391909116815260200190565b600060208284031215610a2457600080fd5b81356001600160a01b0381168114610a3b57600080fd5b9392505050565b600060208284031215610a5457600080fd5b5051919050565b600060208284031215610a6d57600080fd5b81518015158114610a3b57600080fd5b808202811582820484141761098557634e487b7160e01b600052601160045260246000fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b600082610afc57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220dcdbf5f58690e56578cd4d674696f93db2fefcf8bbbd49cc4c7cb07b9ac73eb264736f6c63430008110033",
  "immutableReferences": {},
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:919:54",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:54",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "66:86:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "130:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "139:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "142:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "132:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "132:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "132:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "89:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "100:5:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "115:3:54",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "120:1:54",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "111:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "111:11:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "124:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "107:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "107:19:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "96:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "96:31:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "86:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "86:42:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "79:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "79:50:54"
                  },
                  "nodeType": "YulIf",
                  "src": "76:70:54"
                }
              ]
            },
            "name": "validator_revert_contract_Token",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "55:5:54",
                "type": ""
              }
            ],
            "src": "14:138:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "357:560:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "404:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "413:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "416:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "406:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "406:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "406:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "378:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "387:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "374:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "374:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "399:3:54",
                        "type": "",
                        "value": "192"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "370:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "370:33:54"
                  },
                  "nodeType": "YulIf",
                  "src": "367:53:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "429:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "445:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "439:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "439:16:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "429:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "464:35:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "484:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "495:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "480:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "480:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "474:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "474:25:54"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "464:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "508:38:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "531:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "542:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "527:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "527:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "521:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "521:25:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "512:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "587:5:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_contract_Token",
                      "nodeType": "YulIdentifier",
                      "src": "555:31:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "555:38:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "555:38:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "602:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "612:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "602:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "626:40:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "651:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "662:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "647:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "647:18:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "641:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "641:25:54"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nodeType": "YulTypedName",
                      "src": "630:7:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_1",
                        "nodeType": "YulIdentifier",
                        "src": "707:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_contract_Token",
                      "nodeType": "YulIdentifier",
                      "src": "675:31:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "675:40:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "675:40:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "724:17:54",
                  "value": {
                    "name": "value_1",
                    "nodeType": "YulIdentifier",
                    "src": "734:7:54"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "724:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "750:36:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "770:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "781:3:54",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "766:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "766:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "760:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "760:26:54"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "750:6:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "795:41:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "820:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "831:3:54",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "816:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "816:19:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "810:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "810:26:54"
                  },
                  "variables": [
                    {
                      "name": "value_2",
                      "nodeType": "YulTypedName",
                      "src": "799:7:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value_2",
                        "nodeType": "YulIdentifier",
                        "src": "877:7:54"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_contract_Token",
                      "nodeType": "YulIdentifier",
                      "src": "845:31:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "845:40:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "845:40:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "894:17:54",
                  "value": {
                    "name": "value_2",
                    "nodeType": "YulIdentifier",
                    "src": "904:7:54"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "894:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_uint256t_contract$_Token_$13849t_contract$_MarineCoin_$4620t_uint256t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "283:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "294:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "306:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "314:6:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "322:6:54",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "330:6:54",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "338:6:54",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "346:6:54",
                "type": ""
              }
            ],
            "src": "157:760:54"
          }
        ]
      },
      "contents": "{\n    { }\n    function validator_revert_contract_Token(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_uint256t_contract$_Token_$13849t_contract$_MarineCoin_$4620t_uint256t_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n        let value := mload(add(headStart, 64))\n        validator_revert_contract_Token(value)\n        value2 := value\n        let value_1 := mload(add(headStart, 96))\n        validator_revert_contract_Token(value_1)\n        value3 := value_1\n        value4 := mload(add(headStart, 128))\n        let value_2 := mload(add(headStart, 160))\n        validator_revert_contract_Token(value_2)\n        value5 := value_2\n    }\n}",
      "id": 54,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:7414:54",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:54",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "115:76:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "125:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "137:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "148:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "133:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "133:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "125:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "167:9:54"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "178:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "160:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "160:25:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "160:25:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "84:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "95:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "106:4:54",
                "type": ""
              }
            ],
            "src": "14:177:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "266:110:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "312:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "321:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "324:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "314:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "314:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "314:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "287:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "296:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "283:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "283:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "308:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "279:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "279:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "276:52:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "337:33:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "360:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "347:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "347:23:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "337:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "232:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "243:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "255:6:54",
                "type": ""
              }
            ],
            "src": "196:180:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "501:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "511:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "523:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "534:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "519:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "519:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "511:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "553:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "568:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "584:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "589:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "580:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "580:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "593:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "576:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "576:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "564:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "564:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "546:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "546:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "546:51:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_MarineCoin_$4620__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "470:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "481:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "492:4:54",
                "type": ""
              }
            ],
            "src": "381:222:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "703:92:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "713:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "725:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "736:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "721:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "721:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "713:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "755:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "780:6:54"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "773:6:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "773:14:54"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "766:6:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "766:22:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "748:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "748:41:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "748:41:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "672:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "683:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "694:4:54",
                "type": ""
              }
            ],
            "src": "608:187:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "927:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "937:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "949:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "960:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "945:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "945:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "937:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "979:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "994:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1010:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1015:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "1006:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1006:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1019:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "1002:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1002:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "990:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "990:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "972:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "972:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "972:51:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_IIdentityRegistry_$6637__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "896:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "907:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "918:4:54",
                "type": ""
              }
            ],
            "src": "800:229:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1135:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1145:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1157:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1168:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1153:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1153:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1145:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1187:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "1202:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1218:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1223:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "1214:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1214:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1227:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "1210:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1210:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "1198:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1198:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1180:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1180:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1180:51:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1104:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1115:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1126:4:54",
                "type": ""
              }
            ],
            "src": "1034:203:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1358:102:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1368:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1380:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1391:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1376:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1376:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1368:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1410:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "1425:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1441:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1446:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "1437:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1437:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1450:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "1433:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1433:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "1421:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1421:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1403:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1403:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1403:51:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_Token_$13849__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1327:9:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1338:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1349:4:54",
                "type": ""
              }
            ],
            "src": "1242:218:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1535:216:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1581:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1590:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1593:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1583:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1583:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1583:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1556:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1565:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1552:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1552:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1577:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1548:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1548:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "1545:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1606:36:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1632:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1619:12:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1619:23:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "1610:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1705:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1714:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1717:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1707:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1707:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1707:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "1664:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1675:5:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1690:3:54",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1695:1:54",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1686:3:54"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1686:11:54"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1699:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1682:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1682:19:54"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "1671:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1671:31:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "1661:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1661:42:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1654:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1654:50:54"
                  },
                  "nodeType": "YulIf",
                  "src": "1651:70:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1730:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "1740:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1730:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1501:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1512:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1524:6:54",
                "type": ""
              }
            ],
            "src": "1465:286:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1930:181:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1947:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1958:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1940:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1940:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1940:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1981:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1992:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1977:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1977:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1997:2:54",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1970:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1970:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1970:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2020:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2031:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2016:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2016:18:54"
                      },
                      {
                        "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "2036:33:54",
                        "type": "",
                        "value": "ReentrancyGuard: reentrant call"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2009:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2009:61:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2009:61:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2079:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2091:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2102:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2087:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2087:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "2079:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1907:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1921:4:54",
                "type": ""
              }
            ],
            "src": "1756:355:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2197:103:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2243:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2252:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2255:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2245:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2245:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2245:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2218:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2227:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2214:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2214:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2239:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2210:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2210:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "2207:52:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2268:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2284:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "2278:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2278:16:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2268:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2163:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2174:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2186:6:54",
                "type": ""
              }
            ],
            "src": "2116:184:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2479:233:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2496:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2507:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2489:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2489:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2489:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2530:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2541:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2526:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2526:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2546:2:54",
                        "type": "",
                        "value": "43"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2519:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2519:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2519:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2569:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2580:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2565:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2565:18:54"
                      },
                      {
                        "hexValue": "6e6f7420656e6f756768204d6172696e6520436f696e20746f20636f76657220",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "2585:34:54",
                        "type": "",
                        "value": "not enough Marine Coin to cover "
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2558:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2558:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2558:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2640:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2651:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2636:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2636:18:54"
                      },
                      {
                        "hexValue": "6974656d20707269636520",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "2656:13:54",
                        "type": "",
                        "value": "item price "
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2629:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2629:41:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2629:41:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2679:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2691:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2702:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2687:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2687:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "2679:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_ecf8f4bbb6d1ce95fbe2c23d42138f68c00e63b4c5f259b5a65863a31623c4a0__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2456:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "2470:4:54",
                "type": ""
              }
            ],
            "src": "2305:407:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2846:175:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2856:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2868:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2879:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2864:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2864:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "2856:4:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2891:29:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2909:3:54",
                            "type": "",
                            "value": "160"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2914:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "2905:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2905:11:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2918:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "2901:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2901:19:54"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "2895:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2936:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "2951:6:54"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "2959:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "2947:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2947:15:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2929:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2929:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2929:34:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2983:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2994:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2979:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2979:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "3003:6:54"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "3011:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "2999:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2999:15:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2972:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2972:43:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2972:43:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2807:9:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2818:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2826:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "2837:4:54",
                "type": ""
              }
            ],
            "src": "2717:304:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3200:235:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3217:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3228:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3210:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3210:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3210:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3251:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3262:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3247:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3247:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3267:2:54",
                        "type": "",
                        "value": "45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3240:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3240:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3240:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3290:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3301:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3286:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3286:18:54"
                      },
                      {
                        "hexValue": "6e6f7420656e6f756768204d6172696e6520436f696e20746f20627579207365",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "3306:34:54",
                        "type": "",
                        "value": "not enough Marine Coin to buy se"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3279:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3279:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3279:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3361:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3372:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3357:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3357:18:54"
                      },
                      {
                        "hexValue": "63757269747920546f6b656e73",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "3377:15:54",
                        "type": "",
                        "value": "curity Tokens"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3350:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3350:43:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3350:43:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3402:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3414:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3425:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3410:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3410:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "3402:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_20697b994f43dd810a993c555ed416bb62e8beb0edbeee63bf73ef430821e425__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3177:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3191:4:54",
                "type": ""
              }
            ],
            "src": "3026:409:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3518:199:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3564:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3573:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3576:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3566:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3566:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3566:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3539:7:54"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3548:9:54"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3535:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3535:23:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3560:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3531:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3531:32:54"
                  },
                  "nodeType": "YulIf",
                  "src": "3528:52:54"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3589:29:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3608:9:54"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "3602:5:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3602:16:54"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "3593:5:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3671:16:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3680:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3683:1:54",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3673:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3673:12:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3673:12:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "3640:5:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3661:5:54"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3654:6:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3654:13:54"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "3647:6:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3647:21:54"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "3637:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3637:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "3630:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3630:40:54"
                  },
                  "nodeType": "YulIf",
                  "src": "3627:60:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3696:15:54",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "3706:5:54"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3696:6:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bool_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3484:9:54",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3495:7:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3507:6:54",
                "type": ""
              }
            ],
            "src": "3440:277:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3896:175:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3913:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3924:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3906:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3906:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3906:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3947:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3958:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3943:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3943:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3963:2:54",
                        "type": "",
                        "value": "25"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3936:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3936:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3936:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3986:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3997:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3982:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3982:18:54"
                      },
                      {
                        "hexValue": "4964656e74697479206973206e6f742076657269666965642e",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "4002:27:54",
                        "type": "",
                        "value": "Identity is not verified."
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3975:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3975:55:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3975:55:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4039:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4051:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4062:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4047:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4047:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4039:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_7885d1d076c7cb06968a199289d2d58ec4ab4a669ff082350b4910edd50058db__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3873:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3887:4:54",
                "type": ""
              }
            ],
            "src": "3722:349:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4250:158:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4267:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4278:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4260:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4260:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4260:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4301:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4312:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4297:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4297:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4317:1:54",
                        "type": "",
                        "value": "9"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4290:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4290:29:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4290:29:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4339:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4350:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4335:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4335:18:54"
                      },
                      {
                        "hexValue": "53544f20656e646564",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "4355:11:54",
                        "type": "",
                        "value": "STO ended"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4328:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4328:39:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4328:39:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4376:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4388:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4399:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4384:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4384:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4376:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_a10aed1787c20ff56124d22834bda58bac3e43b5dadb2d0bb81d955ac0e7a735__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4227:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "4241:4:54",
                "type": ""
              }
            ],
            "src": "4076:332:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4587:165:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4604:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4615:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4597:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4597:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4597:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4638:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4649:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4634:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4634:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4654:2:54",
                        "type": "",
                        "value": "15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4627:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4627:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4627:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4677:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4688:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4673:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4673:18:54"
                      },
                      {
                        "hexValue": "53544f206e6f742073746172746564",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "4693:17:54",
                        "type": "",
                        "value": "STO not started"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4666:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4666:45:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4666:45:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4720:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4732:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4743:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4728:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4728:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4720:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_582854b29f013a007c304b9524d81905ff023faa53f1cb71d2b773db3c2bfd11__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4564:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "4578:4:54",
                "type": ""
              }
            ],
            "src": "4413:339:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4809:213:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4819:20:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "4834:1:54"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "4837:1:54"
                      }
                    ],
                    "functionName": {
                      "name": "mul",
                      "nodeType": "YulIdentifier",
                      "src": "4830:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4830:9:54"
                  },
                  "variableNames": [
                    {
                      "name": "product",
                      "nodeType": "YulIdentifier",
                      "src": "4819:7:54"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4905:111:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4926:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "4933:3:54",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "4938:10:54",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "4929:3:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4929:20:54"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "4919:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4919:31:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4919:31:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4970:1:54",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4973:4:54",
                              "type": "",
                              "value": "0x11"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "4963:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4963:15:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4963:15:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4998:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5001:4:54",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4991:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4991:15:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4991:15:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "x",
                                "nodeType": "YulIdentifier",
                                "src": "4868:1:54"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "4861:6:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4861:9:54"
                          },
                          {
                            "arguments": [
                              {
                                "name": "y",
                                "nodeType": "YulIdentifier",
                                "src": "4875:1:54"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "product",
                                    "nodeType": "YulIdentifier",
                                    "src": "4882:7:54"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "4891:1:54"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "4878:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4878:15:54"
                              }
                            ],
                            "functionName": {
                              "name": "eq",
                              "nodeType": "YulIdentifier",
                              "src": "4872:2:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4872:22:54"
                          }
                        ],
                        "functionName": {
                          "name": "or",
                          "nodeType": "YulIdentifier",
                          "src": "4858:2:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4858:37:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "4851:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4851:45:54"
                  },
                  "nodeType": "YulIf",
                  "src": "4848:168:54"
                }
              ]
            },
            "name": "checked_mul_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "4788:1:54",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "4791:1:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "product",
                "nodeType": "YulTypedName",
                "src": "4797:7:54",
                "type": ""
              }
            ],
            "src": "4757:265:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5192:218:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5202:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5214:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5225:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5210:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5210:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5202:4:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5237:29:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5255:3:54",
                            "type": "",
                            "value": "160"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5260:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "5251:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5251:11:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5264:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "5247:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5247:19:54"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "5241:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5282:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "5297:6:54"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "5305:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "5293:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5293:15:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5275:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5275:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5275:34:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5329:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5340:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5325:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5325:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "5349:6:54"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "5357:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "5345:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5345:15:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5318:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5318:43:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5318:43:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5381:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5392:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5377:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5377:18:54"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "5397:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5370:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5370:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5370:34:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_payable_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5145:9:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "5156:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5164:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5172:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5183:4:54",
                "type": ""
              }
            ],
            "src": "5027:383:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5580:218:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5590:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5602:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5613:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5598:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5598:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5590:4:54"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5625:29:54",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5643:3:54",
                            "type": "",
                            "value": "160"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5648:1:54",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "5639:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5639:11:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5652:1:54",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "5635:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5635:19:54"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "5629:2:54",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5670:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "5685:6:54"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "5693:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "5681:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5681:15:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5663:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5663:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5663:34:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5717:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5728:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5713:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5713:18:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "5737:6:54"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "5745:2:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "5733:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5733:15:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5706:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5706:43:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5706:43:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5769:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5780:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5765:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5765:18:54"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "5785:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5758:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5758:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5758:34:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_payable_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5533:9:54",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "5544:6:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5552:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5560:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5571:4:54",
                "type": ""
              }
            ],
            "src": "5415:383:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5932:145:54",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5942:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5954:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5965:2:54",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5950:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5950:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5942:4:54"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5984:9:54"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "5999:6:54"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6015:3:54",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6020:1:54",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "6011:3:54"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6011:11:54"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6024:1:54",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "6007:3:54"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6007:19:54"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "5995:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5995:32:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5977:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5977:51:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5977:51:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6048:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6059:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6044:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6044:18:54"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "6064:6:54"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6037:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6037:34:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6037:34:54"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5893:9:54",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5904:6:54",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5912:6:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5923:4:54",
                "type": ""
              }
            ],
            "src": "5803:274:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6256:228:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6273:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6284:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6266:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6266:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6266:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6307:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6318:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6303:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6303:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6323:2:54",
                        "type": "",
                        "value": "38"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6296:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6296:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6296:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6346:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6357:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6342:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6342:18:54"
                      },
                      {
                        "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "6362:34:54",
                        "type": "",
                        "value": "Ownable: new owner is the zero a"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6335:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6335:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6335:62:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6417:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6428:2:54",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6413:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6413:18:54"
                      },
                      {
                        "hexValue": "646472657373",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "6433:8:54",
                        "type": "",
                        "value": "ddress"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6406:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6406:36:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6406:36:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6451:27:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6463:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6474:3:54",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6459:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6459:19:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6451:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6233:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6247:4:54",
                "type": ""
              }
            ],
            "src": "6082:402:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6663:182:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6680:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6691:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6673:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6673:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6673:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6714:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6725:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6710:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6710:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6730:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6703:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6703:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6703:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6753:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6764:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6749:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6749:18:54"
                      },
                      {
                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "6769:34:54",
                        "type": "",
                        "value": "Ownable: caller is not the owner"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "6742:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6742:62:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "6742:62:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6813:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6825:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6836:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6821:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6821:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "6813:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6640:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "6654:4:54",
                "type": ""
              }
            ],
            "src": "6489:356:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7024:166:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7041:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7052:2:54",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7034:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7034:21:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7034:21:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7075:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7086:2:54",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7071:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7071:18:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7091:2:54",
                        "type": "",
                        "value": "16"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7064:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7064:30:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7064:30:54"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7114:9:54"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7125:2:54",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7110:3:54"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7110:18:54"
                      },
                      {
                        "hexValue": "5061757361626c653a20706175736564",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "7130:18:54",
                        "type": "",
                        "value": "Pausable: paused"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7103:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7103:46:54"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7103:46:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7158:26:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7170:9:54"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7181:2:54",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7166:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7166:18:54"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "7158:4:54"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7001:9:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "7015:4:54",
                "type": ""
              }
            ],
            "src": "6850:340:54"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7241:171:54",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7272:111:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7293:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "7300:3:54",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "7305:10:54",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "7296:3:54"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "7296:20:54"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "7286:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7286:31:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7286:31:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7337:1:54",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7340:4:54",
                              "type": "",
                              "value": "0x12"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "7330:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7330:15:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7330:15:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7365:1:54",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7368:4:54",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7358:6:54"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7358:15:54"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7358:15:54"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "7261:1:54"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "7254:6:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7254:9:54"
                  },
                  "nodeType": "YulIf",
                  "src": "7251:132:54"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7392:14:54",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "7401:1:54"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "7404:1:54"
                      }
                    ],
                    "functionName": {
                      "name": "div",
                      "nodeType": "YulIdentifier",
                      "src": "7397:3:54"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7397:9:54"
                  },
                  "variableNames": [
                    {
                      "name": "r",
                      "nodeType": "YulIdentifier",
                      "src": "7392:1:54"
                    }
                  ]
                }
              ]
            },
            "name": "checked_div_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "7226:1:54",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "7229:1:54",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "r",
                "nodeType": "YulTypedName",
                "src": "7235:1:54",
                "type": ""
              }
            ],
            "src": "7195:217:54"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_contract$_MarineCoin_$4620__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_contract$_IIdentityRegistry_$6637__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_contract$_Token_$13849__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ReentrancyGuard: reentrant call\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_ecf8f4bbb6d1ce95fbe2c23d42138f68c00e63b4c5f259b5a65863a31623c4a0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"not enough Marine Coin to cover \")\n        mstore(add(headStart, 96), \"item price \")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_t_stringliteral_20697b994f43dd810a993c555ed416bb62e8beb0edbeee63bf73ef430821e425__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 45)\n        mstore(add(headStart, 64), \"not enough Marine Coin to buy se\")\n        mstore(add(headStart, 96), \"curity Tokens\")\n        tail := add(headStart, 128)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_7885d1d076c7cb06968a199289d2d58ec4ab4a669ff082350b4910edd50058db__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Identity is not verified.\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_a10aed1787c20ff56124d22834bda58bac3e43b5dadb2d0bb81d955ac0e7a735__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 9)\n        mstore(add(headStart, 64), \"STO ended\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_582854b29f013a007c304b9524d81905ff023faa53f1cb71d2b773db3c2bfd11__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"STO not started\")\n        tail := add(headStart, 96)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x))))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_address_t_address_payable_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_payable_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Pausable: paused\")\n        tail := add(headStart, 96)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n}",
      "id": 54,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "338:2159:28:-:0;;;725:512;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1701:1:15;1806:7;:22;;;996:15:14;;-1:-1:-1;;996:15:14;;;936:32:13;719:10:20;936:18:13;:32::i;:::-;963:9:28::2;:22:::0;;;;995:7:::2;:18:::0;;;;1023:5:::2;:27:::0;;1039:10:::2;-1:-1:-1::0;;;;;;1023:27:28;;::::2;;::::0;;;1060:11:::2;:26:::0;;;::::2;-1:-1:-1::0;;;;;1060:26:28;;::::2;;::::0;;-1:-1:-1;1096:30:28;;;::::2;::::0;;::::2;::::0;;;::::2;::::0;;;-1:-1:-1;1136:24:28;;;;1170:21:::2;:60:::0;;;;::::2;::::0;;;::::2;;::::0;;338:2159;;2433:187:13;2525:6;;;-1:-1:-1;;;;;2541:17:13;;;2525:6;2541:17;;;-1:-1:-1;;;;;;2541:17:13;;;;;;2573:40;;2525:6;;;;;;;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;14:138:54:-;-1:-1:-1;;;;;96:31:54;;86:42;;76:70;;142:1;139;132:12;76:70;14:138;:::o;157:760::-;306:6;314;322;330;338;346;399:3;387:9;378:7;374:23;370:33;367:53;;;416:1;413;406:12;367:53;445:9;439:16;429:26;;495:2;484:9;480:18;474:25;464:35;;542:2;531:9;527:18;521:25;555:38;587:5;555:38;:::i;:::-;662:2;647:18;;641:25;612:5;;-1:-1:-1;675:40:54;641:25;675:40;:::i;:::-;781:3;766:19;;760:26;831:3;816:19;;810:26;734:7;;-1:-1:-1;760:26:54;-1:-1:-1;845:40:54;810:26;845:40;:::i;:::-;904:7;894:17;;;157:760;;;;;;;;:::o;:::-;338:2159:28;;;;;;",
  "deployedSourceMap": "338:2159:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2412:83;;;;;;;;;;;;;:::i;:::-;;595:22;;;;;;;;;;;;;;;;;;;160:25:54;;;148:2;133:18;595:22:28;;;;;;;;1379:814;;;;;;:::i;:::-;;:::i;2199:207::-;;;;;;;;;;;;;:::i;468:29::-;;;;;;;;;;-1:-1:-1;468:29:28;;;;-1:-1:-1;;;;;468:29:28;;;;;;;;;;:::i;534:25::-;;;;;;;;;;;;;;;;1615:84:14;;;;;;;;;;-1:-1:-1;1685:7:14;;;;1615:84;;773:14:54;;766:22;748:41;;736:2;721:18;1615:84:14;608:187:54;1831:101:13;;;;;;;;;;;;;:::i;565:24:28:-;;;;;;;;;;;;;;;;503:25;;;;;;;;;;;;;;;;623:46;;;;;;;;;;-1:-1:-1;623:46:28;;;;-1:-1:-1;;;;;623:46:28;;;1201:85:13;;;;;;;;;;;;;:::i;436:26:28:-;;;;;;;;;;-1:-1:-1;436:26:28;;;;-1:-1:-1;;;;;436:26:28;;;2081:198:13;;;;;;;;;;-1:-1:-1;2081:198:13;;;;;:::i;:::-;;:::i;2412:83:28:-;1094:13:13;:11;:13::i;:::-;2461:5:28::1;:27:::0;;-1:-1:-1;;;;;;2461:27:28::1;2477:10;2461:27;::::0;;2412:83::o;1379:814::-;1744:1:15;2325:7;;:19;2317:63;;;;-1:-1:-1;;;2317:63:15;;1958:2:54;2317:63:15;;;1940:21:54;1997:2;1977:18;;;1970:30;2036:33;2016:18;;;2009:61;2087:18;;2317:63:15;;;;;;;;;1744:1;2455:7;:18;1239:19:14::1;:17;:19::i;:::-;1475::28::2;1497:37;1506:15;1523:10;;1497:8;:37::i;:::-;1552:11;::::0;;:33:::2;::::0;-1:-1:-1;;;1552:33:28;;1475:59;;-1:-1:-1;1475:59:28;;-1:-1:-1;;;;;1552:11:28;;::::2;::::0;:21:::2;::::0;:33:::2;::::0;1574:10:::2;::::0;1552:33:::2;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1544:104;;;::::0;-1:-1:-1;;;1544:104:28;;2507:2:54;1544:104:28::2;::::0;::::2;2489:21:54::0;2546:2;2526:18;;;2519:30;2585:34;2565:18;;;2558:62;-1:-1:-1;;;2636:18:54;;;2629:41;2687:19;;1544:104:28::2;2305:407:54::0;1544:104:28::2;1666:11;::::0;;:48:::2;::::0;-1:-1:-1;;;1666:48:28;;1688:10:::2;1666:48:::0;;::::2;2929:34:54::0;;;;1708:4:28::2;2979:18:54::0;;;2972:43;1718:11:28;;-1:-1:-1;;;;;1666:11:28;;::::2;::::0;:21:::2;::::0;2864:18:54;;1666:48:28::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:63;;1658:121;;;::::0;-1:-1:-1;;;1658:121:28;;3228:2:54;1658:121:28::2;::::0;::::2;3210:21:54::0;3267:2;3247:18;;;3240:30;3306:34;3286:18;;;3279:62;-1:-1:-1;;;3357:18:54;;;3350:43;3410:19;;1658:121:28::2;3026:409:54::0;1658:121:28::2;1797:21;::::0;:44:::2;::::0;-1:-1:-1;;;1797:44:28;;-1:-1:-1;;;;;1797:21:28;;::::2;::::0;:32:::2;::::0;:44:::2;::::0;1830:10:::2;::::0;1797:44:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1789:82;;;::::0;-1:-1:-1;;;1789:82:28;;3924:2:54;1789:82:28::2;::::0;::::2;3906:21:54::0;3963:2;3943:18;;;3936:30;-1:-1:-1;;;3982:18:54;;;3975:55;4047:18;;1789:82:28::2;3722:349:54::0;1789:82:28::2;1908:7;;1889:15;:26;;1881:48;;;::::0;-1:-1:-1;;;1881:48:28;;4278:2:54;1881:48:28::2;::::0;::::2;4260:21:54::0;4317:1;4297:18;;;4290:29;-1:-1:-1;;;4335:18:54;;;4328:39;4384:18;;1881:48:28::2;4076:332:54::0;1881:48:28::2;1966:9;;1947:15;:28;;1939:55;;;::::0;-1:-1:-1;;;1939:55:28;;4615:2:54;1939:55:28::2;::::0;::::2;4597:21:54::0;4654:2;4634:18;;;4627:30;-1:-1:-1;;;4673:18:54;;;4666:45;4728:18;;1939:55:28::2;4413:339:54::0;1939:55:28::2;2004:11;::::0;2041:5:::2;::::0;-1:-1:-1;;;;;2004:11:28;;::::2;::::0;:24:::2;::::0;2029:10:::2;::::0;2041:5:::2;2048:18;:11:::0;2062:4:::2;2048:18;:::i;:::-;2004:63;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;2077:13:28::2;::::0;2104:5:::2;::::0;2077:61:::2;::::0;-1:-1:-1;;;2077:61:28;;-1:-1:-1;;;;;2077:13:28;;::::2;::::0;:26:::2;::::0;:61:::2;::::0;2104:5;::::2;::::0;2110:10:::2;::::0;2122:15;;2077:61:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2153:33;2158:10;2170:15;2153:33;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;1701:1:15;2628:7;:22;1379:814:28:o;2199:207::-;1094:13:13;:11;:13::i;:::-;2267:5:28::1;::::0;-1:-1:-1;;;;;2267:5:28::1;2253:10;:19;2245:28;;;::::0;::::1;;2291:13;::::0;2322:5:::1;::::0;2330:38:::1;::::0;-1:-1:-1;;;2330:38:28;;-1:-1:-1;;;;;2291:13:28;;::::1;::::0;:22:::1;::::0;2322:5:::1;::::0;2291:13;;2330:23:::1;::::0;:38:::1;::::0;2362:4:::1;::::0;2330:38:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2291:78;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2283:87;;;::::0;::::1;;2393:5;::::0;-1:-1:-1;;;;;2393:5:28::1;2380:19;1831:101:13::0;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1201:85::-;1273:6;;;;;-1:-1:-1;;;;;1273:6:13;;1201:85::o;2081:198::-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:13;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:13;;6284:2:54;2161:73:13::1;::::0;::::1;6266:21:54::0;6323:2;6303:18;;;6296:30;6362:34;6342:18;;;6335:62;-1:-1:-1;;;6413:18:54;;;6406:36;6459:19;;2161:73:13::1;6082:402:54::0;2161:73:13::1;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;1359:130::-;719:10:20;1422:7:13;:5;:7::i;:::-;-1:-1:-1;;;;;1422:23:13;;1414:68;;;;-1:-1:-1;;;1414:68:13;;6691:2:54;1414:68:13;;;6673:21:54;;;6710:18;;;6703:30;6769:34;6749:18;;;6742:62;6821:18;;1414:68:13;6489:356:54;1767:106:14;1685:7;;;;1836:9;1828:38;;;;-1:-1:-1;;;1828:38:14;;7052:2:54;1828:38:14;;;7034:21:54;7091:2;7071:18;;;7064:30;-1:-1:-1;;;7110:18:54;;;7103:46;7166:18;;1828:38:14;6850:340:54;1243:130:28;1306:9;1335:6;;;:30;;-1:-1:-1;1364:1:28;1359;1350:5;1359:1;1364;1350:5;:::i;:::-;1346:9;-1:-1:-1;1345:15:28;;1346:9;1345:15;:::i;:::-;:20;1335:30;1327:39;;;;;;1243:130;;;;:::o;2433:187:13:-;2525:6;;;-1:-1:-1;;;;;2541:17:13;;;2525:6;2541:17;;;-1:-1:-1;;;;;;2541:17:13;;;;;;2573:40;;2525:6;;;;;;;;2573:40;;2506:16;;2573:40;2496:124;2433:187;:::o;196:180:54:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:54;;196:180;-1:-1:-1;196:180:54:o;381:222::-;-1:-1:-1;;;;;564:32:54;;;;546:51;;534:2;519:18;;381:222::o;1465:286::-;1524:6;1577:2;1565:9;1556:7;1552:23;1548:32;1545:52;;;1593:1;1590;1583:12;1545:52;1619:23;;-1:-1:-1;;;;;1671:31:54;;1661:42;;1651:70;;1717:1;1714;1707:12;1651:70;1740:5;1465:286;-1:-1:-1;;;1465:286:54:o;2116:184::-;2186:6;2239:2;2227:9;2218:7;2214:23;2210:32;2207:52;;;2255:1;2252;2245:12;2207:52;-1:-1:-1;2278:16:54;;2116:184;-1:-1:-1;2116:184:54:o;3440:277::-;3507:6;3560:2;3548:9;3539:7;3535:23;3531:32;3528:52;;;3576:1;3573;3566:12;3528:52;3608:9;3602:16;3661:5;3654:13;3647:21;3640:5;3637:32;3627:60;;3683:1;3680;3673:12;4757:265;4830:9;;;4861;;4878:15;;;4872:22;;4858:37;4848:168;;4938:10;4933:3;4929:20;4926:1;4919:31;4973:4;4970:1;4963:15;5001:4;4998:1;4991:15;5027:383;-1:-1:-1;;;;;5293:15:54;;;5275:34;;5345:15;;;;5340:2;5325:18;;5318:43;5392:2;5377:18;;5370:34;;;;5225:2;5210:18;;5027:383::o;5803:274::-;-1:-1:-1;;;;;5995:32:54;;;;5977:51;;6059:2;6044:18;;6037:34;5965:2;5950:18;;5803:274::o;7195:217::-;7235:1;7261;7251:132;;7305:10;7300:3;7296:20;7293:1;7286:31;7340:4;7337:1;7330:15;7368:4;7365:1;7358:15;7251:132;-1:-1:-1;7397:9:54;;7195:217::o",
  "source": "// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.0;\n\nimport '@openzeppelin/contracts/security/Pausable.sol';\nimport '@openzeppelin/contracts/security/ReentrancyGuard.sol';\nimport '@openzeppelin/contracts/access/Ownable.sol';\nimport '../token/Token.sol';\nimport '../registry/IIdentityRegistry.sol';\nimport '../MarineCoin.sol';\n\ncontract SecurityTokenSale is ReentrancyGuard, Pausable, Ownable {\n    address payable admin;\n    Token public securityToken;\n    MarineCoin public marineToken;\n    uint256 public tokenPrice;\n    uint256 public tokensSold;\n    uint256 public startTime;\n    uint256 public endTime;\n    IIdentityRegistry public tokenIdentityRegistry;\n    event Sell(address _buyer, uint256 _amount);\n\n    constructor(\n        uint256 _startTime,\n        uint256 _endTime,\n        Token _securityToken,\n        MarineCoin _marineToken,\n        uint256 _tokenPrice,\n        address _identityRegistry\n    ) ReentrancyGuard() Pausable() {\n        startTime = _startTime;\n        endTime = _endTime;\n        admin = payable(msg.sender);\n        marineToken = _marineToken;\n        securityToken = _securityToken;\n        tokenPrice = _tokenPrice;\n        tokenIdentityRegistry = IIdentityRegistry(_identityRegistry);\n    }\n\n    function multiply(uint256 x, uint256 y) internal pure returns (uint256 z) {\n        require(y == 0 || (z = x * y) / y == x);\n    }\n\n    function buyTokens(uint256 _numberOfTokens) public payable nonReentrant whenNotPaused {\n        uint256 _totalPrice = multiply(_numberOfTokens, tokenPrice);\n        require(marineToken.balanceOf(msg.sender) >= _totalPrice, 'not enough Marine Coin to cover item price ');\n        require(marineToken.allowance(msg.sender, address(this)) >= _totalPrice, 'not enough Marine Coin to buy security Tokens');\n        require(tokenIdentityRegistry.isVerified(msg.sender), 'Identity is not verified.');\n        require(block.timestamp <= endTime ,\"STO ended\");\n        require(block.timestamp >= startTime,\"STO not started\");\n        marineToken.transferFrom(msg.sender, admin, _totalPrice * 1e18);\n        securityToken.transferFrom(admin,msg.sender, _numberOfTokens);\n        emit Sell(msg.sender, _numberOfTokens);\n    }\n\n    function endSale() public onlyOwner {\n        require(msg.sender == admin);\n        require(securityToken.transfer(address(admin), securityToken.balanceOf(address(this))));\n        selfdestruct(admin);\n    }\n\n    function setAdmin() external onlyOwner {\n        admin = payable(msg.sender);\n    }\n}\n",
  "sourcePath": "/home/webxpert/workspace/shipfinex/latest-repos/tokenx_smartcontract/contracts/SecurityTokenSale/SecurityTokenSale.sol",
  "ast": {
    "absolutePath": "project:/contracts/SecurityTokenSale/SecurityTokenSale.sol",
    "exportedSymbols": {
      "AddressUpgradeable": [
        2350
      ],
      "AgentRoleUpgradeable": [
        9203
      ],
      "Context": [
        3401
      ],
      "ContextUpgradeable": [
        2392
      ],
      "ERC20": [
        3239
      ],
      "IClaimIssuer": [
        1456
      ],
      "IClaimTopicsRegistry": [
        6444
      ],
      "ICompliance": [
        5596
      ],
      "IERC20": [
        3317
      ],
      "IERC20Metadata": [
        3379
      ],
      "IERC734": [
        1609
      ],
      "IERC735": [
        1734
      ],
      "IIdentity": [
        1743
      ],
      "IIdentityRegistry": [
        6637
      ],
      "IIdentityRegistryStorage": [
        6759
      ],
      "IToken": [
        12234
      ],
      "ITrustedIssuersRegistry": [
        6856
      ],
      "Initializable": [
        2107
      ],
      "MarineCoin": [
        4620
      ],
      "Ownable": [
        2505
      ],
      "OwnableUpgradeable": [
        1956
      ],
      "Pausable": [
        2613
      ],
      "ReentrancyGuard": [
        2653
      ],
      "Roles": [
        11901
      ],
      "SecurityTokenSale": [
        5268
      ],
      "Token": [
        13849
      ],
      "TokenStorage": [
        12284
      ]
    },
    "id": 5269,
    "license": "UNLICENSED",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5005,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "39:23:28"
      },
      {
        "absolutePath": "@openzeppelin/contracts/security/Pausable.sol",
        "file": "@openzeppelin/contracts/security/Pausable.sol",
        "id": 5006,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5269,
        "sourceUnit": 2614,
        "src": "64:55:28",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/security/ReentrancyGuard.sol",
        "file": "@openzeppelin/contracts/security/ReentrancyGuard.sol",
        "id": 5007,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5269,
        "sourceUnit": 2654,
        "src": "120:62:28",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
        "file": "@openzeppelin/contracts/access/Ownable.sol",
        "id": 5008,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5269,
        "sourceUnit": 2506,
        "src": "183:52:28",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/token/Token.sol",
        "file": "../token/Token.sol",
        "id": 5009,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5269,
        "sourceUnit": 13850,
        "src": "236:28:28",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/registry/IIdentityRegistry.sol",
        "file": "../registry/IIdentityRegistry.sol",
        "id": 5010,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5269,
        "sourceUnit": 6638,
        "src": "265:43:28",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/MarineCoin.sol",
        "file": "../MarineCoin.sol",
        "id": 5011,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5269,
        "sourceUnit": 4621,
        "src": "309:27:28",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 5012,
              "name": "ReentrancyGuard",
              "nameLocations": [
                "368:15:28"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2653,
              "src": "368:15:28"
            },
            "id": 5013,
            "nodeType": "InheritanceSpecifier",
            "src": "368:15:28"
          },
          {
            "baseName": {
              "id": 5014,
              "name": "Pausable",
              "nameLocations": [
                "385:8:28"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2613,
              "src": "385:8:28"
            },
            "id": 5015,
            "nodeType": "InheritanceSpecifier",
            "src": "385:8:28"
          },
          {
            "baseName": {
              "id": 5016,
              "name": "Ownable",
              "nameLocations": [
                "395:7:28"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2505,
              "src": "395:7:28"
            },
            "id": 5017,
            "nodeType": "InheritanceSpecifier",
            "src": "395:7:28"
          }
        ],
        "canonicalName": "SecurityTokenSale",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 5268,
        "linearizedBaseContracts": [
          5268,
          2505,
          2613,
          3401,
          2653
        ],
        "name": "SecurityTokenSale",
        "nameLocation": "347:17:28",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 5019,
            "mutability": "mutable",
            "name": "admin",
            "nameLocation": "425:5:28",
            "nodeType": "VariableDeclaration",
            "scope": 5268,
            "src": "409:21:28",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address_payable",
              "typeString": "address payable"
            },
            "typeName": {
              "id": 5018,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "409:15:28",
              "stateMutability": "payable",
              "typeDescriptions": {
                "typeIdentifier": "t_address_payable",
                "typeString": "address payable"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "functionSelector": "b84dfbd2",
            "id": 5022,
            "mutability": "mutable",
            "name": "securityToken",
            "nameLocation": "449:13:28",
            "nodeType": "VariableDeclaration",
            "scope": 5268,
            "src": "436:26:28",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Token_$13849",
              "typeString": "contract Token"
            },
            "typeName": {
              "id": 5021,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 5020,
                "name": "Token",
                "nameLocations": [
                  "436:5:28"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 13849,
                "src": "436:5:28"
              },
              "referencedDeclaration": 13849,
              "src": "436:5:28",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Token_$13849",
                "typeString": "contract Token"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "430b6252",
            "id": 5025,
            "mutability": "mutable",
            "name": "marineToken",
            "nameLocation": "486:11:28",
            "nodeType": "VariableDeclaration",
            "scope": 5268,
            "src": "468:29:28",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_MarineCoin_$4620",
              "typeString": "contract MarineCoin"
            },
            "typeName": {
              "id": 5024,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 5023,
                "name": "MarineCoin",
                "nameLocations": [
                  "468:10:28"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 4620,
                "src": "468:10:28"
              },
              "referencedDeclaration": 4620,
              "src": "468:10:28",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_MarineCoin_$4620",
                "typeString": "contract MarineCoin"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "7ff9b596",
            "id": 5027,
            "mutability": "mutable",
            "name": "tokenPrice",
            "nameLocation": "518:10:28",
            "nodeType": "VariableDeclaration",
            "scope": 5268,
            "src": "503:25:28",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5026,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "503:7:28",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "518ab2a8",
            "id": 5029,
            "mutability": "mutable",
            "name": "tokensSold",
            "nameLocation": "549:10:28",
            "nodeType": "VariableDeclaration",
            "scope": 5268,
            "src": "534:25:28",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5028,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "534:7:28",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "78e97925",
            "id": 5031,
            "mutability": "mutable",
            "name": "startTime",
            "nameLocation": "580:9:28",
            "nodeType": "VariableDeclaration",
            "scope": 5268,
            "src": "565:24:28",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5030,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "565:7:28",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "3197cbb6",
            "id": 5033,
            "mutability": "mutable",
            "name": "endTime",
            "nameLocation": "610:7:28",
            "nodeType": "VariableDeclaration",
            "scope": 5268,
            "src": "595:22:28",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5032,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "595:7:28",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "82eb9f28",
            "id": 5036,
            "mutability": "mutable",
            "name": "tokenIdentityRegistry",
            "nameLocation": "648:21:28",
            "nodeType": "VariableDeclaration",
            "scope": 5268,
            "src": "623:46:28",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
              "typeString": "contract IIdentityRegistry"
            },
            "typeName": {
              "id": 5035,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 5034,
                "name": "IIdentityRegistry",
                "nameLocations": [
                  "623:17:28"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 6637,
                "src": "623:17:28"
              },
              "referencedDeclaration": 6637,
              "src": "623:17:28",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                "typeString": "contract IIdentityRegistry"
              }
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "eventSelector": "5e5e995ce3133561afceaa51a9a154d5db228cd7525d34df5185582c18d3df09",
            "id": 5042,
            "name": "Sell",
            "nameLocation": "681:4:28",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5041,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5038,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_buyer",
                  "nameLocation": "694:6:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 5042,
                  "src": "686:14:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5037,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "686:7:28",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5040,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nameLocation": "710:7:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 5042,
                  "src": "702:15:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5039,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "702:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "685:33:28"
            },
            "src": "675:44:28"
          },
          {
            "body": {
              "id": 5097,
              "nodeType": "Block",
              "src": "953:284:28",
              "statements": [
                {
                  "expression": {
                    "id": 5065,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5063,
                      "name": "startTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5031,
                      "src": "963:9:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 5064,
                      "name": "_startTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5044,
                      "src": "975:10:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "963:22:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5066,
                  "nodeType": "ExpressionStatement",
                  "src": "963:22:28"
                },
                {
                  "expression": {
                    "id": 5069,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5067,
                      "name": "endTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5033,
                      "src": "995:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 5068,
                      "name": "_endTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5046,
                      "src": "1005:8:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "995:18:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5070,
                  "nodeType": "ExpressionStatement",
                  "src": "995:18:28"
                },
                {
                  "expression": {
                    "id": 5077,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5071,
                      "name": "admin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5019,
                      "src": "1023:5:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 5074,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "1039:3:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1043:6:28",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1039:10:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 5073,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1031:8:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_payable_$",
                          "typeString": "type(address payable)"
                        },
                        "typeName": {
                          "id": 5072,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1031:8:28",
                          "stateMutability": "payable",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 5076,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1031:19:28",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1023:27:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "id": 5078,
                  "nodeType": "ExpressionStatement",
                  "src": "1023:27:28"
                },
                {
                  "expression": {
                    "id": 5081,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5079,
                      "name": "marineToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5025,
                      "src": "1060:11:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MarineCoin_$4620",
                        "typeString": "contract MarineCoin"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 5080,
                      "name": "_marineToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5052,
                      "src": "1074:12:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_MarineCoin_$4620",
                        "typeString": "contract MarineCoin"
                      }
                    },
                    "src": "1060:26:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MarineCoin_$4620",
                      "typeString": "contract MarineCoin"
                    }
                  },
                  "id": 5082,
                  "nodeType": "ExpressionStatement",
                  "src": "1060:26:28"
                },
                {
                  "expression": {
                    "id": 5085,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5083,
                      "name": "securityToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5022,
                      "src": "1096:13:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Token_$13849",
                        "typeString": "contract Token"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 5084,
                      "name": "_securityToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5049,
                      "src": "1112:14:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Token_$13849",
                        "typeString": "contract Token"
                      }
                    },
                    "src": "1096:30:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Token_$13849",
                      "typeString": "contract Token"
                    }
                  },
                  "id": 5086,
                  "nodeType": "ExpressionStatement",
                  "src": "1096:30:28"
                },
                {
                  "expression": {
                    "id": 5089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5087,
                      "name": "tokenPrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5027,
                      "src": "1136:10:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 5088,
                      "name": "_tokenPrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5054,
                      "src": "1149:11:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1136:24:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 5090,
                  "nodeType": "ExpressionStatement",
                  "src": "1136:24:28"
                },
                {
                  "expression": {
                    "id": 5095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5091,
                      "name": "tokenIdentityRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5036,
                      "src": "1170:21:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                        "typeString": "contract IIdentityRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 5093,
                          "name": "_identityRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5056,
                          "src": "1212:17:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 5092,
                        "name": "IIdentityRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6637,
                        "src": "1194:17:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IIdentityRegistry_$6637_$",
                          "typeString": "type(contract IIdentityRegistry)"
                        }
                      },
                      "id": 5094,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1194:36:28",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                        "typeString": "contract IIdentityRegistry"
                      }
                    },
                    "src": "1170:60:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                      "typeString": "contract IIdentityRegistry"
                    }
                  },
                  "id": 5096,
                  "nodeType": "ExpressionStatement",
                  "src": "1170:60:28"
                }
              ]
            },
            "id": 5098,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [],
                "id": 5059,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 5058,
                  "name": "ReentrancyGuard",
                  "nameLocations": [
                    "924:15:28"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 2653,
                  "src": "924:15:28"
                },
                "nodeType": "ModifierInvocation",
                "src": "924:17:28"
              },
              {
                "arguments": [],
                "id": 5061,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 5060,
                  "name": "Pausable",
                  "nameLocations": [
                    "942:8:28"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 2613,
                  "src": "942:8:28"
                },
                "nodeType": "ModifierInvocation",
                "src": "942:10:28"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5057,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5044,
                  "mutability": "mutable",
                  "name": "_startTime",
                  "nameLocation": "754:10:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 5098,
                  "src": "746:18:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5043,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "746:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5046,
                  "mutability": "mutable",
                  "name": "_endTime",
                  "nameLocation": "782:8:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 5098,
                  "src": "774:16:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5045,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "774:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5049,
                  "mutability": "mutable",
                  "name": "_securityToken",
                  "nameLocation": "806:14:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 5098,
                  "src": "800:20:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Token_$13849",
                    "typeString": "contract Token"
                  },
                  "typeName": {
                    "id": 5048,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5047,
                      "name": "Token",
                      "nameLocations": [
                        "800:5:28"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 13849,
                      "src": "800:5:28"
                    },
                    "referencedDeclaration": 13849,
                    "src": "800:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Token_$13849",
                      "typeString": "contract Token"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5052,
                  "mutability": "mutable",
                  "name": "_marineToken",
                  "nameLocation": "841:12:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 5098,
                  "src": "830:23:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_MarineCoin_$4620",
                    "typeString": "contract MarineCoin"
                  },
                  "typeName": {
                    "id": 5051,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5050,
                      "name": "MarineCoin",
                      "nameLocations": [
                        "830:10:28"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4620,
                      "src": "830:10:28"
                    },
                    "referencedDeclaration": 4620,
                    "src": "830:10:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MarineCoin_$4620",
                      "typeString": "contract MarineCoin"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5054,
                  "mutability": "mutable",
                  "name": "_tokenPrice",
                  "nameLocation": "871:11:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 5098,
                  "src": "863:19:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5053,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "863:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5056,
                  "mutability": "mutable",
                  "name": "_identityRegistry",
                  "nameLocation": "900:17:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 5098,
                  "src": "892:25:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5055,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "892:7:28",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "736:187:28"
            },
            "returnParameters": {
              "id": 5062,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "953:0:28"
            },
            "scope": 5268,
            "src": "725:512:28",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5124,
              "nodeType": "Block",
              "src": "1317:56:28",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 5121,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5108,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5102,
                            "src": "1335:1:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 5109,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1340:1:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1335:6:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5118,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "id": 5115,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 5111,
                                    "name": "z",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5105,
                                    "src": "1346:1:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5114,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 5112,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5100,
                                      "src": "1350:1:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 5113,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5102,
                                      "src": "1354:1:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1350:5:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1346:9:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 5116,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1345:11:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 5117,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5102,
                              "src": "1359:1:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1345:15:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 5119,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5100,
                            "src": "1364:1:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1345:20:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1335:30:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5107,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "1327:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5122,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1327:39:28",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5123,
                  "nodeType": "ExpressionStatement",
                  "src": "1327:39:28"
                }
              ]
            },
            "id": 5125,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "multiply",
            "nameLocation": "1252:8:28",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5103,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5100,
                  "mutability": "mutable",
                  "name": "x",
                  "nameLocation": "1269:1:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 5125,
                  "src": "1261:9:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5099,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1261:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5102,
                  "mutability": "mutable",
                  "name": "y",
                  "nameLocation": "1280:1:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 5125,
                  "src": "1272:9:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5101,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1272:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1260:22:28"
            },
            "returnParameters": {
              "id": 5106,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5105,
                  "mutability": "mutable",
                  "name": "z",
                  "nameLocation": "1314:1:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 5125,
                  "src": "1306:9:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5104,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1306:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1305:11:28"
            },
            "scope": 5268,
            "src": "1243:130:28",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5218,
              "nodeType": "Block",
              "src": "1465:728:28",
              "statements": [
                {
                  "assignments": [
                    5135
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5135,
                      "mutability": "mutable",
                      "name": "_totalPrice",
                      "nameLocation": "1483:11:28",
                      "nodeType": "VariableDeclaration",
                      "scope": 5218,
                      "src": "1475:19:28",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5134,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1475:7:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 5140,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 5137,
                        "name": "_numberOfTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5127,
                        "src": "1506:15:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 5138,
                        "name": "tokenPrice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5027,
                        "src": "1523:10:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5136,
                      "name": "multiply",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5125,
                      "src": "1497:8:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 5139,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1497:37:28",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1475:59:28"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5148,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5144,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "1574:3:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1578:6:28",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1574:10:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 5142,
                              "name": "marineToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5025,
                              "src": "1552:11:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MarineCoin_$4620",
                                "typeString": "contract MarineCoin"
                              }
                            },
                            "id": 5143,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1564:9:28",
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2752,
                            "src": "1552:21:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 5146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1552:33:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "id": 5147,
                          "name": "_totalPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5135,
                          "src": "1589:11:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1552:48:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "6e6f7420656e6f756768204d6172696e6520436f696e20746f20636f766572206974656d20707269636520",
                        "id": 5149,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1602:45:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ecf8f4bbb6d1ce95fbe2c23d42138f68c00e63b4c5f259b5a65863a31623c4a0",
                          "typeString": "literal_string \"not enough Marine Coin to cover item price \""
                        },
                        "value": "not enough Marine Coin to cover item price "
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ecf8f4bbb6d1ce95fbe2c23d42138f68c00e63b4c5f259b5a65863a31623c4a0",
                          "typeString": "literal_string \"not enough Marine Coin to cover item price \""
                        }
                      ],
                      "id": 5141,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "1544:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5150,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1544:104:28",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5151,
                  "nodeType": "ExpressionStatement",
                  "src": "1544:104:28"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5163,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5155,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "1688:3:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1692:6:28",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1688:10:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5159,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967268,
                                  "src": "1708:4:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_SecurityTokenSale_$5268",
                                    "typeString": "contract SecurityTokenSale"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_SecurityTokenSale_$5268",
                                    "typeString": "contract SecurityTokenSale"
                                  }
                                ],
                                "id": 5158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1700:7:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5157,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1700:7:28",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5160,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1700:13:28",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 5153,
                              "name": "marineToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5025,
                              "src": "1666:11:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_MarineCoin_$4620",
                                "typeString": "contract MarineCoin"
                              }
                            },
                            "id": 5154,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1678:9:28",
                            "memberName": "allowance",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2795,
                            "src": "1666:21:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256)"
                            }
                          },
                          "id": 5161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1666:48:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "id": 5162,
                          "name": "_totalPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5135,
                          "src": "1718:11:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1666:63:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "6e6f7420656e6f756768204d6172696e6520436f696e20746f2062757920736563757269747920546f6b656e73",
                        "id": 5164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1731:47:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_20697b994f43dd810a993c555ed416bb62e8beb0edbeee63bf73ef430821e425",
                          "typeString": "literal_string \"not enough Marine Coin to buy security Tokens\""
                        },
                        "value": "not enough Marine Coin to buy security Tokens"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_20697b994f43dd810a993c555ed416bb62e8beb0edbeee63bf73ef430821e425",
                          "typeString": "literal_string \"not enough Marine Coin to buy security Tokens\""
                        }
                      ],
                      "id": 5152,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "1658:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1658:121:28",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5166,
                  "nodeType": "ExpressionStatement",
                  "src": "1658:121:28"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 5170,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "1830:3:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1834:6:28",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "1830:10:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 5168,
                            "name": "tokenIdentityRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5036,
                            "src": "1797:21:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IIdentityRegistry_$6637",
                              "typeString": "contract IIdentityRegistry"
                            }
                          },
                          "id": 5169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1819:10:28",
                          "memberName": "isVerified",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6580,
                          "src": "1797:32:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view external returns (bool)"
                          }
                        },
                        "id": 5172,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1797:44:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4964656e74697479206973206e6f742076657269666965642e",
                        "id": 5173,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1843:27:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7885d1d076c7cb06968a199289d2d58ec4ab4a669ff082350b4910edd50058db",
                          "typeString": "literal_string \"Identity is not verified.\""
                        },
                        "value": "Identity is not verified."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7885d1d076c7cb06968a199289d2d58ec4ab4a669ff082350b4910edd50058db",
                          "typeString": "literal_string \"Identity is not verified.\""
                        }
                      ],
                      "id": 5167,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "1789:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5174,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1789:82:28",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5175,
                  "nodeType": "ExpressionStatement",
                  "src": "1789:82:28"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5180,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 5177,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967292,
                            "src": "1889:5:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 5178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1895:9:28",
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "src": "1889:15:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "id": 5179,
                          "name": "endTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5033,
                          "src": "1908:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1889:26:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "53544f20656e646564",
                        "id": 5181,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1917:11:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a10aed1787c20ff56124d22834bda58bac3e43b5dadb2d0bb81d955ac0e7a735",
                          "typeString": "literal_string \"STO ended\""
                        },
                        "value": "STO ended"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a10aed1787c20ff56124d22834bda58bac3e43b5dadb2d0bb81d955ac0e7a735",
                          "typeString": "literal_string \"STO ended\""
                        }
                      ],
                      "id": 5176,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "1881:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5182,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1881:48:28",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5183,
                  "nodeType": "ExpressionStatement",
                  "src": "1881:48:28"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5188,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 5185,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967292,
                            "src": "1947:5:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 5186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1953:9:28",
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "src": "1947:15:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "id": 5187,
                          "name": "startTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5031,
                          "src": "1966:9:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1947:28:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "53544f206e6f742073746172746564",
                        "id": 5189,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1976:17:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_582854b29f013a007c304b9524d81905ff023faa53f1cb71d2b773db3c2bfd11",
                          "typeString": "literal_string \"STO not started\""
                        },
                        "value": "STO not started"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_582854b29f013a007c304b9524d81905ff023faa53f1cb71d2b773db3c2bfd11",
                          "typeString": "literal_string \"STO not started\""
                        }
                      ],
                      "id": 5184,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "1939:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5190,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1939:55:28",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5191,
                  "nodeType": "ExpressionStatement",
                  "src": "1939:55:28"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 5195,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "2029:3:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5196,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2033:6:28",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2029:10:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 5197,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5019,
                        "src": "2041:5:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 5198,
                          "name": "_totalPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5135,
                          "src": "2048:11:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "hexValue": "31653138",
                          "id": 5199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2062:4:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000"
                          },
                          "value": "1e18"
                        },
                        "src": "2048:18:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 5192,
                        "name": "marineToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5025,
                        "src": "2004:11:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_MarineCoin_$4620",
                          "typeString": "contract MarineCoin"
                        }
                      },
                      "id": 5194,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2016:12:28",
                      "memberName": "transferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2853,
                      "src": "2004:24:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,address,uint256) external returns (bool)"
                      }
                    },
                    "id": 5201,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2004:63:28",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5202,
                  "nodeType": "ExpressionStatement",
                  "src": "2004:63:28"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 5206,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5019,
                        "src": "2104:5:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "expression": {
                          "id": 5207,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "2110:3:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2114:6:28",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2110:10:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 5209,
                        "name": "_numberOfTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5127,
                        "src": "2122:15:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 5203,
                        "name": "securityToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5022,
                        "src": "2077:13:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Token_$13849",
                          "typeString": "contract Token"
                        }
                      },
                      "id": 5205,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2091:12:28",
                      "memberName": "transferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13150,
                      "src": "2077:26:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,address,uint256) external returns (bool)"
                      }
                    },
                    "id": 5210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2077:61:28",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 5211,
                  "nodeType": "ExpressionStatement",
                  "src": "2077:61:28"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 5213,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "2158:3:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2162:6:28",
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2158:10:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 5215,
                        "name": "_numberOfTokens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5127,
                        "src": "2170:15:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 5212,
                      "name": "Sell",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5042,
                      "src": "2153:4:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 5216,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2153:33:28",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5217,
                  "nodeType": "EmitStatement",
                  "src": "2148:38:28"
                }
              ]
            },
            "functionSelector": "3610724e",
            "id": 5219,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 5130,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 5129,
                  "name": "nonReentrant",
                  "nameLocations": [
                    "1438:12:28"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 2652,
                  "src": "1438:12:28"
                },
                "nodeType": "ModifierInvocation",
                "src": "1438:12:28"
              },
              {
                "id": 5132,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 5131,
                  "name": "whenNotPaused",
                  "nameLocations": [
                    "1451:13:28"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 2540,
                  "src": "1451:13:28"
                },
                "nodeType": "ModifierInvocation",
                "src": "1451:13:28"
              }
            ],
            "name": "buyTokens",
            "nameLocation": "1388:9:28",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5128,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5127,
                  "mutability": "mutable",
                  "name": "_numberOfTokens",
                  "nameLocation": "1406:15:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 5219,
                  "src": "1398:23:28",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5126,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1398:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1397:25:28"
            },
            "returnParameters": {
              "id": 5133,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1465:0:28"
            },
            "scope": 5268,
            "src": "1379:814:28",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5252,
              "nodeType": "Block",
              "src": "2235:171:28",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 5228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 5225,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "2253:3:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "2257:6:28",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "2253:10:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 5227,
                          "name": "admin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5019,
                          "src": "2267:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "2253:19:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5224,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2245:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5229,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2245:28:28",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5230,
                  "nodeType": "ExpressionStatement",
                  "src": "2245:28:28"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 5236,
                                "name": "admin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5019,
                                "src": "2322:5:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "id": 5235,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2314:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5234,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2314:7:28",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5237,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2314:14:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 5242,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967268,
                                    "src": "2362:4:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_SecurityTokenSale_$5268",
                                      "typeString": "contract SecurityTokenSale"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_SecurityTokenSale_$5268",
                                      "typeString": "contract SecurityTokenSale"
                                    }
                                  ],
                                  "id": 5241,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2354:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5240,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2354:7:28",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2354:13:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 5238,
                                "name": "securityToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5022,
                                "src": "2330:13:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Token_$13849",
                                  "typeString": "contract Token"
                                }
                              },
                              "id": 5239,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2344:9:28",
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12412,
                              "src": "2330:23:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 5244,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2330:38:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 5232,
                            "name": "securityToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5022,
                            "src": "2291:13:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Token_$13849",
                              "typeString": "contract Token"
                            }
                          },
                          "id": 5233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "2305:8:28",
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12965,
                          "src": "2291:22:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 5245,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2291:78:28",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 5231,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2283:7:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 5246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2283:87:28",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5247,
                  "nodeType": "ExpressionStatement",
                  "src": "2283:87:28"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 5249,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5019,
                        "src": "2393:5:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 5248,
                      "name": "selfdestruct",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967275,
                      "src": "2380:12:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_payable_$returns$__$",
                        "typeString": "function (address payable)"
                      }
                    },
                    "id": 5250,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2380:19:28",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5251,
                  "nodeType": "ExpressionStatement",
                  "src": "2380:19:28"
                }
              ]
            },
            "functionSelector": "380d831b",
            "id": 5253,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 5222,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 5221,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "2225:9:28"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 2424,
                  "src": "2225:9:28"
                },
                "nodeType": "ModifierInvocation",
                "src": "2225:9:28"
              }
            ],
            "name": "endSale",
            "nameLocation": "2208:7:28",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5220,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2215:2:28"
            },
            "returnParameters": {
              "id": 5223,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2235:0:28"
            },
            "scope": 5268,
            "src": "2199:207:28",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5266,
              "nodeType": "Block",
              "src": "2451:44:28",
              "statements": [
                {
                  "expression": {
                    "id": 5264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5258,
                      "name": "admin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5019,
                      "src": "2461:5:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 5261,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "2477:3:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 5262,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "2481:6:28",
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "2477:10:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 5260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2469:8:28",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_payable_$",
                          "typeString": "type(address payable)"
                        },
                        "typeName": {
                          "id": 5259,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2469:8:28",
                          "stateMutability": "payable",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 5263,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2469:19:28",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2461:27:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "id": 5265,
                  "nodeType": "ExpressionStatement",
                  "src": "2461:27:28"
                }
              ]
            },
            "functionSelector": "2cae2096",
            "id": 5267,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 5256,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 5255,
                  "name": "onlyOwner",
                  "nameLocations": [
                    "2441:9:28"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 2424,
                  "src": "2441:9:28"
                },
                "nodeType": "ModifierInvocation",
                "src": "2441:9:28"
              }
            ],
            "name": "setAdmin",
            "nameLocation": "2421:8:28",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5254,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2429:2:28"
            },
            "returnParameters": {
              "id": 5257,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2451:0:28"
            },
            "scope": 5268,
            "src": "2412:83:28",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 5269,
        "src": "338:2159:28",
        "usedErrors": []
      }
    ],
    "src": "39:2459:28"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.17+commit.8df45f5f.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.8",
  "updatedAt": "2022-12-08T12:51:01.351Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "paused()": {
        "details": "Returns true if the contract is paused, and false otherwise."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}