{
  "contract_name": "Math",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "LN2",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "a",
          "type": "int256"
        },
        {
          "name": "b",
          "type": "int256"
        }
      ],
      "name": "safeToMul",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "LOG2_E",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "x",
          "type": "uint256"
        }
      ],
      "name": "ln",
      "outputs": [
        {
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "x",
          "type": "uint256"
        }
      ],
      "name": "floorLog2",
      "outputs": [
        {
          "name": "lo",
          "type": "int256"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "a",
          "type": "uint256"
        },
        {
          "name": "b",
          "type": "uint256"
        }
      ],
      "name": "safeToAdd",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "a",
          "type": "uint256"
        },
        {
          "name": "b",
          "type": "uint256"
        }
      ],
      "name": "add",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "a",
          "type": "int256"
        },
        {
          "name": "b",
          "type": "int256"
        }
      ],
      "name": "safeToSub",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "a",
          "type": "int256"
        },
        {
          "name": "b",
          "type": "int256"
        }
      ],
      "name": "add",
      "outputs": [
        {
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "a",
          "type": "int256"
        },
        {
          "name": "b",
          "type": "int256"
        }
      ],
      "name": "sub",
      "outputs": [
        {
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "a",
          "type": "uint256"
        },
        {
          "name": "b",
          "type": "uint256"
        }
      ],
      "name": "sub",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "a",
          "type": "int256"
        },
        {
          "name": "b",
          "type": "int256"
        }
      ],
      "name": "mul",
      "outputs": [
        {
          "name": "",
          "type": "int256"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ONE",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "a",
          "type": "uint256"
        },
        {
          "name": "b",
          "type": "uint256"
        }
      ],
      "name": "mul",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "a",
          "type": "uint256"
        },
        {
          "name": "b",
          "type": "uint256"
        }
      ],
      "name": "safeToMul",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "nums",
          "type": "int256[]"
        }
      ],
      "name": "max",
      "outputs": [
        {
          "name": "max",
          "type": "int256"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "a",
          "type": "int256"
        },
        {
          "name": "b",
          "type": "int256"
        }
      ],
      "name": "safeToAdd",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "a",
          "type": "uint256"
        },
        {
          "name": "b",
          "type": "uint256"
        }
      ],
      "name": "safeToSub",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "x",
          "type": "int256"
        }
      ],
      "name": "exp",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "type": "function"
    }
  ],
  "unlinked_binary": "0x6060604052341561000f57600080fd5b5b610b648061001f6000396000f300606060405236156101045763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630278067781146101095780631f47ba291461012357806324902e241461014557806324d4e90a1461015f57806345b8bafc1461017c5780634e30a66c14610199578063771602f7146101bb57806390304341146101db578063a5f3c23b146101fd578063adefc37b1461021d578063b67d77c51461023d578063bbe93d911461025d578063c2ee3a081461027d578063c8a4ac9c14610297578063cb10fa76146102b7578063ccc13814146102d9578063dc08a80b1461032f578063e31c71c414610351578063e46751e314610373575b600080fd5b610111610390565b60405190815260200160405180910390f35b61013160043560243561039c565b604051901515815260200160405180910390f35b6101116103c0565b60405190815260200160405180910390f35b6101116004356103cd565b60405190815260200160405180910390f35b610111600435610604565b60405190815260200160405180910390f35b610131600435602435610679565b604051901515815260200160405180910390f35b610111600435602435610687565b60405190815260200160405180910390f35b6101316004356024356106a9565b604051901515815260200160405180910390f35b6101116004356024356106de565b60405190815260200160405180910390f35b610111600435602435610700565b60405190815260200160405180910390f35b610111600435602435610722565b60405190815260200160405180910390f35b610111600435602435610744565b60405190815260200160405180910390f35b610111610766565b60405190815260200160405180910390f35b61011160043560243561076e565b60405190815260200160405180910390f35b610131600435602435610790565b604051901515815260200160405180910390f35b61011160046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506107b495505050505050565b60405190815260200160405180910390f35b61013160043560243561083b565b604051901515815260200160405180910390f35b610131600435602435610870565b604051901515815260200160405180910390f35b61011160043561087b565b60405190815260200160405180910390f35b67b17217f7d1cf79ac81565b60008115806103b7575082828385028115156103b457fe5b05145b90505b92915050565b680171547652b82fe17781565b600080808080808087116103e057600080fd5b6103e987610604565b945060008512156104055784600003879060020a02935061040f565b600285900a870493505b604060020a8401604060020a8086030281151561042857fe5b059250829150604060020a82818180025b050281151561044457fe5b0590506003815b059190910190604060020a83818382025b050281151561046757fe5b0590506005815b059190910190604060020a83818382025b050281151561048a57fe5b0590506007815b059190910190604060020a83818382025b05028115156104ad57fe5b0590506009815b059190910190604060020a83818382025b05028115156104d057fe5b059050600b815b059190910190604060020a83818382025b05028115156104f357fe5b059050600d815b059190910190604060020a83818382025b050281151561051657fe5b059050600f815b059190910190604060020a83818382025b050281151561053957fe5b0590506011815b059190910190604060020a83818382025b050281151561055c57fe5b0590506013815b059190910190604060020a83818382025b050281151561057f57fe5b0590506015815b059190910190604060020a83818382025b05028115156105a257fe5b0590506017815b059190910190604060020a83818382025b05028115156105c557fe5b0590506019815b05919091019060028202680171547652b82fe17770010000000000000000000000000000000087025b050195505b5050505050919050565b603f1960c160405b81836001011215610671576000811280156106335750604060020a81600003859060020a02105b806106535750600081121580156106535750604060020a600282900a8504105b5b1561066157809150610665565b8092505b5060028183010561060c565b5b5050919050565b808201829010155b92915050565b60006106938383610679565b151561069e57600080fd5b508181015b92915050565b60008082121580156106bd57508282840313155b806103b757506000821280156103b7575082828403135b5b90505b92915050565b6000610693838361083b565b151561069e57600080fd5b508181015b92915050565b600061070c83836106a9565b151561071757600080fd5b508082035b92915050565b600061070c8383610870565b151561071757600080fd5b508082035b92915050565b6000610750838361039c565b151561075b57600080fd5b508181025b92915050565b604060020a81565b60006107508383610790565b151561075b57600080fd5b508181025b92915050565b60008115806103b7575082828385028115156107a857fe5b04145b90505b92915050565b60008060008351116107c557600080fd5b507f8000000000000000000000000000000000000000000000000000000000000000905060005b8251811015610834578183828151811061080257fe5b90602001906020020151131561082b5782818151811061081e57fe5b9060200190602002015191505b5b6001016107ec565b5b50919050565b600080821215801561084f57508282840112155b806103b757506000821280156103b7575082828401125b5b90505b92915050565b808210155b92915050565b60008080808068851591f9dd5b9b40d786131561089757600080fd5b682c5c85fdf473de6af2198612156108b25760009450610b2e565b67b17217f7d1cf79ac604060020a87025b059550600086126108e757604060020a865b059350604060020a865b079250610909565b6001604060020a875b05039350604060020a60008790035b07604060020a0392505b50819050604060020a8067b17217f7d1cf79ab83025b0401604060020a8284025b049150604060020a673d7f7bff058b1d5083025b0401604060020a8284025b049150604060020a670e35846b82505fc583025b0401604060020a8284025b049150604060020a670276556df749cee583025b0401604060020a8284025b049150604060020a665761ff9e299cc483025b0401604060020a8284025b049150604060020a660a184897c363c383025b0401604060020a8284025b049150604060020a65ffe5fe2c458683025b0401604060020a8284025b049150604060020a65162c0223a5c883025b0401604060020a8284025b049150604060020a6501b5253d395e83025b0401604060020a8284025b049150604060020a641e4cf5158b83025b0401604060020a8284025b049150604060020a6401e8cac73583025b0401604060020a8284025b049150604060020a631c3bd65083025b0401604060020a8284025b049150604060020a630181619383025b0401604060020a8284025b049150604060020a6213149683025b0401604060020a8284025b049150604060020a61e1b783025b0401604060020a8284025b049150604060020a6109c783025b040160008412610b155760008461010003826000821215610ae657fe5b9060020a90041115610afc576000199450610b2e565b83816000821215610b0957fe5b9060020a029450610b2e565b83600003816000821215610b2557fe5b9060020a900494505b5b505050509190505600a165627a7a72305820fd949c77e3c99bcc23893e7ef6deca85a8c774cd09e066fa5d4a9819fcaaae850029",
  "networks": {
    "1": {
      "events": {},
      "links": {},
      "address": "0x62f4074655d8f888e9293c59d2a5faa5156f2275",
      "updated_at": 1513984936000
    },
    "3": {
      "events": {},
      "links": {},
      "address": "0xc55c643d9084df9372c43fc2f4f6cd3f7446d00d",
      "updated_at": 1503605014183
    },
    "4": {
      "events": {},
      "links": {},
      "address": "0x472099767cc73a371c1848cbc0d17357e9bba52a",
      "updated_at": 1503603856229
    },
    "42": {
      "events": {},
      "links": {},
      "address": "0x0dd253f644e702346ec67839088ae5954d51e76b",
      "updated_at": 1503602339882
    },
    "437894314312": {
      "events": {},
      "links": {},
      "address": "0x5b1869d9a4c187f2eaa108f3062412ecf0526b24",
      "updated_at": 1507361155400
    }
  },
  "schema_version": "0.0.5",
  "updated_at": 1525713263313
}