{
  "abi": [
    {
      "inputs": [],
      "name": "EXP",
      "outputs": [
        {
          "internalType": "int8",
          "name": "",
          "type": "int8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MULTIPLIER",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MULTIPLIER_HALF",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ROUNDING_DEFAULT",
      "outputs": [
        {
          "internalType": "enum UFixedType.Rounding",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "UFixed",
          "name": "a",
          "type": "uint256"
        },
        {
          "internalType": "enum UFixedType.Rounding",
          "name": "rounding",
          "type": "uint8"
        }
      ],
      "name": "ftoi",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "UFixed",
          "name": "a",
          "type": "uint256"
        }
      ],
      "name": "ftoi",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "a",
          "type": "uint256"
        }
      ],
      "name": "itof",
      "outputs": [
        {
          "internalType": "UFixed",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "a",
          "type": "uint256"
        },
        {
          "internalType": "int8",
          "name": "exp",
          "type": "int8"
        }
      ],
      "name": "itof",
      "outputs": [
        {
          "internalType": "UFixed",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "allSourcePaths": {
    "30": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/math/Math.sol",
    "47": "contracts/shared/UFixedMath.sol"
  },
  "ast": {
    "absolutePath": "contracts/shared/UFixedMath.sol",
    "exportedSymbols": {
      "Math": [
        13636
      ],
      "UFixed": [
        5099
      ],
      "UFixedType": [
        5591
      ],
      "addUFixed": [
        5137
      ],
      "delta": [
        5410
      ],
      "divUFixed": [
        5242
      ],
      "eqUFixed": [
        5352
      ],
      "eqz": [
        5384
      ],
      "gtUFixed": [
        5264
      ],
      "gteUFixed": [
        5286
      ],
      "gtz": [
        5368
      ],
      "ltUFixed": [
        5308
      ],
      "lteUFixed": [
        5330
      ],
      "mulUFixed": [
        5201
      ],
      "subUFixed": [
        5170
      ]
    },
    "id": 5592,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5095,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".19"
        ],
        "nodeType": "PragmaDirective",
        "src": "39:24:47"
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/math/Math.sol",
        "file": "@openzeppelin/contracts/utils/math/Math.sol",
        "id": 5097,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5592,
        "sourceUnit": 13637,
        "src": "65:65:47",
        "symbolAliases": [
          {
            "foreign": {
              "id": 5096,
              "name": "Math",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 13636,
              "src": "73:4:47",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "canonicalName": "UFixed",
        "id": 5099,
        "name": "UFixed",
        "nameLocation": "137:6:47",
        "nodeType": "UserDefinedValueTypeDefinition",
        "src": "132:23:47",
        "underlyingType": {
          "id": 5098,
          "name": "uint256",
          "nodeType": "ElementaryTypeName",
          "src": "147:7:47",
          "typeDescriptions": {
            "typeIdentifier": "t_uint256",
            "typeString": "uint256"
          }
        }
      },
      {
        "functionList": [
          {
            "definition": {
              "id": 5100,
              "name": "addUFixed",
              "nameLocations": [
                "169:9:47"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5137,
              "src": "169:9:47"
            },
            "operator": "+"
          },
          {
            "definition": {
              "id": 5101,
              "name": "subUFixed",
              "nameLocations": [
                "189:9:47"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5170,
              "src": "189:9:47"
            },
            "operator": "-"
          },
          {
            "definition": {
              "id": 5102,
              "name": "mulUFixed",
              "nameLocations": [
                "209:9:47"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5201,
              "src": "209:9:47"
            },
            "operator": "*"
          },
          {
            "definition": {
              "id": 5103,
              "name": "divUFixed",
              "nameLocations": [
                "229:9:47"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5242,
              "src": "229:9:47"
            },
            "operator": "/"
          },
          {
            "definition": {
              "id": 5104,
              "name": "gtUFixed",
              "nameLocations": [
                "249:8:47"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5264,
              "src": "249:8:47"
            },
            "operator": ">"
          },
          {
            "definition": {
              "id": 5105,
              "name": "gteUFixed",
              "nameLocations": [
                "268:9:47"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5286,
              "src": "268:9:47"
            },
            "operator": ">="
          },
          {
            "definition": {
              "id": 5106,
              "name": "ltUFixed",
              "nameLocations": [
                "289:8:47"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5308,
              "src": "289:8:47"
            },
            "operator": "<"
          },
          {
            "definition": {
              "id": 5107,
              "name": "lteUFixed",
              "nameLocations": [
                "308:9:47"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5330,
              "src": "308:9:47"
            },
            "operator": "<="
          },
          {
            "definition": {
              "id": 5108,
              "name": "eqUFixed",
              "nameLocations": [
                "329:8:47"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5352,
              "src": "329:8:47"
            },
            "operator": "=="
          }
        ],
        "global": true,
        "id": 5111,
        "nodeType": "UsingForDirective",
        "src": "157:211:47",
        "typeName": {
          "id": 5110,
          "nodeType": "UserDefinedTypeName",
          "pathNode": {
            "id": 5109,
            "name": "UFixed",
            "nameLocations": [
              "354:6:47"
            ],
            "nodeType": "IdentifierPath",
            "referencedDeclaration": 5099,
            "src": "354:6:47"
          },
          "referencedDeclaration": 5099,
          "src": "354:6:47",
          "typeDescriptions": {
            "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
            "typeString": "UFixed"
          }
        }
      },
      {
        "body": {
          "id": 5136,
          "nodeType": "Block",
          "src": "430:64:47",
          "statements": [
            {
              "expression": {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 5127,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5114,
                          "src": "469:1:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                            "typeString": "UFixed"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                            "typeString": "UFixed"
                          }
                        ],
                        "expression": {
                          "id": 5125,
                          "name": "UFixed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5099,
                          "src": "455:6:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                            "typeString": "type(UFixed)"
                          }
                        },
                        "id": 5126,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "462:6:47",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "455:13:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                          "typeString": "function (UFixed) pure returns (uint256)"
                        }
                      },
                      "id": 5128,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "455:16:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "arguments": [
                        {
                          "id": 5131,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5117,
                          "src": "488:1:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                            "typeString": "UFixed"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                            "typeString": "UFixed"
                          }
                        ],
                        "expression": {
                          "id": 5129,
                          "name": "UFixed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5099,
                          "src": "474:6:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                            "typeString": "type(UFixed)"
                          }
                        },
                        "id": 5130,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "481:6:47",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "474:13:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                          "typeString": "function (UFixed) pure returns (uint256)"
                        }
                      },
                      "id": 5132,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "474:16:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "455:35:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  ],
                  "expression": {
                    "id": 5123,
                    "name": "UFixed",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5099,
                    "src": "443:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                      "typeString": "type(UFixed)"
                    }
                  },
                  "id": 5124,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "450:4:47",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "443:11:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UFixed_$5099_$",
                    "typeString": "function (uint256) pure returns (UFixed)"
                  }
                },
                "id": 5134,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "443:48:47",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "functionReturnParameters": 5122,
              "id": 5135,
              "nodeType": "Return",
              "src": "436:55:47"
            }
          ]
        },
        "id": 5137,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "addUFixed",
        "nameLocation": "379:9:47",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 5118,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5114,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "396:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5137,
              "src": "389:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5113,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5112,
                  "name": "UFixed",
                  "nameLocations": [
                    "389:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "389:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "389:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 5117,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "406:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5137,
              "src": "399:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5116,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5115,
                  "name": "UFixed",
                  "nameLocations": [
                    "399:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "399:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "399:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "388:20:47"
        },
        "returnParameters": {
          "id": 5122,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5121,
              "mutability": "mutable",
              "name": "",
              "nameLocation": "-1:-1:-1",
              "nodeType": "VariableDeclaration",
              "scope": 5137,
              "src": "422:6:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5120,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5119,
                  "name": "UFixed",
                  "nameLocations": [
                    "422:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "422:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "422:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "421:8:47"
        },
        "scope": 5592,
        "src": "370:124:47",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 5169,
          "nodeType": "Block",
          "src": "556:119:47",
          "statements": [
            {
              "expression": {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    },
                    "function": 5286,
                    "id": 5152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 5150,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5140,
                      "src": "570:1:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "id": 5151,
                      "name": "b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5143,
                      "src": "575:1:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    },
                    "src": "570:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  {
                    "hexValue": "4552524f523a55464d2d3031303a4e454741544956455f524553554c54",
                    "id": 5153,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "578:31:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_7e98af3dcd91d0da46308f5cc761da13dd1eced37b4aa7814a08af5cd2660f25",
                      "typeString": "literal_string \"ERROR:UFM-010:NEGATIVE_RESULT\""
                    },
                    "value": "ERROR:UFM-010:NEGATIVE_RESULT"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    {
                      "typeIdentifier": "t_stringliteral_7e98af3dcd91d0da46308f5cc761da13dd1eced37b4aa7814a08af5cd2660f25",
                      "typeString": "literal_string \"ERROR:UFM-010:NEGATIVE_RESULT\""
                    }
                  ],
                  "id": 5149,
                  "name": "require",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [
                    -18,
                    -18
                  ],
                  "referencedDeclaration": -18,
                  "src": "562:7:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                    "typeString": "function (bool,string memory) pure"
                  }
                },
                "id": 5154,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "562:48:47",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_tuple$__$",
                  "typeString": "tuple()"
                }
              },
              "id": 5155,
              "nodeType": "ExpressionStatement",
              "src": "562:48:47"
            },
            {
              "expression": {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 5160,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5140,
                          "src": "650:1:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                            "typeString": "UFixed"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                            "typeString": "UFixed"
                          }
                        ],
                        "expression": {
                          "id": 5158,
                          "name": "UFixed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5099,
                          "src": "636:6:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                            "typeString": "type(UFixed)"
                          }
                        },
                        "id": 5159,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "643:6:47",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "636:13:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                          "typeString": "function (UFixed) pure returns (uint256)"
                        }
                      },
                      "id": 5161,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "636:16:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "arguments": [
                        {
                          "id": 5164,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5143,
                          "src": "669:1:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                            "typeString": "UFixed"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                            "typeString": "UFixed"
                          }
                        ],
                        "expression": {
                          "id": 5162,
                          "name": "UFixed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5099,
                          "src": "655:6:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                            "typeString": "type(UFixed)"
                          }
                        },
                        "id": 5163,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "662:6:47",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "655:13:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                          "typeString": "function (UFixed) pure returns (uint256)"
                        }
                      },
                      "id": 5165,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "655:16:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "636:35:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  ],
                  "expression": {
                    "id": 5156,
                    "name": "UFixed",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5099,
                    "src": "624:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                      "typeString": "type(UFixed)"
                    }
                  },
                  "id": 5157,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "631:4:47",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "624:11:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UFixed_$5099_$",
                    "typeString": "function (uint256) pure returns (UFixed)"
                  }
                },
                "id": 5167,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "624:48:47",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "functionReturnParameters": 5148,
              "id": 5168,
              "nodeType": "Return",
              "src": "617:55:47"
            }
          ]
        },
        "id": 5170,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "subUFixed",
        "nameLocation": "505:9:47",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 5144,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5140,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "522:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5170,
              "src": "515:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5139,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5138,
                  "name": "UFixed",
                  "nameLocations": [
                    "515:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "515:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "515:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 5143,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "532:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5170,
              "src": "525:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5142,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5141,
                  "name": "UFixed",
                  "nameLocations": [
                    "525:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "525:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "525:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "514:20:47"
        },
        "returnParameters": {
          "id": 5148,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5147,
              "mutability": "mutable",
              "name": "",
              "nameLocation": "-1:-1:-1",
              "nodeType": "VariableDeclaration",
              "scope": 5170,
              "src": "548:6:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5146,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5145,
                  "name": "UFixed",
                  "nameLocations": [
                    "548:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "548:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "548:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "547:8:47"
        },
        "scope": 5592,
        "src": "496:179:47",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 5200,
          "nodeType": "Block",
          "src": "737:86:47",
          "statements": [
            {
              "expression": {
                "arguments": [
                  {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5188,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5173,
                            "src": "788:1:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                              "typeString": "UFixed"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                              "typeString": "UFixed"
                            }
                          ],
                          "expression": {
                            "id": 5186,
                            "name": "UFixed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5099,
                            "src": "774:6:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                              "typeString": "type(UFixed)"
                            }
                          },
                          "id": 5187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "781:6:47",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "src": "774:13:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                            "typeString": "function (UFixed) pure returns (uint256)"
                          }
                        },
                        "id": 5189,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "774:16:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 5192,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5176,
                            "src": "806:1:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                              "typeString": "UFixed"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                              "typeString": "UFixed"
                            }
                          ],
                          "expression": {
                            "id": 5190,
                            "name": "UFixed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5099,
                            "src": "792:6:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                              "typeString": "type(UFixed)"
                            }
                          },
                          "id": 5191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "799:6:47",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "src": "792:13:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                            "typeString": "function (UFixed) pure returns (uint256)"
                          }
                        },
                        "id": 5193,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "792:16:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "id": 5196,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "3130",
                          "id": 5194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "810:2:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10_by_1",
                            "typeString": "int_const 10"
                          },
                          "value": "10"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "hexValue": "3138",
                          "id": 5195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "816:2:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          "value": "18"
                        },
                        "src": "810:8:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        }
                      ],
                      "expression": {
                        "id": 5184,
                        "name": "Math",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13636,
                        "src": "762:4:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Math_$13636_$",
                          "typeString": "type(library Math)"
                        }
                      },
                      "id": 5185,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "767:6:47",
                      "memberName": "mulDiv",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12984,
                      "src": "762:11:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 5197,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "762:57:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  ],
                  "expression": {
                    "id": 5182,
                    "name": "UFixed",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5099,
                    "src": "750:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                      "typeString": "type(UFixed)"
                    }
                  },
                  "id": 5183,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "757:4:47",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "750:11:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UFixed_$5099_$",
                    "typeString": "function (uint256) pure returns (UFixed)"
                  }
                },
                "id": 5198,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "750:70:47",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "functionReturnParameters": 5181,
              "id": 5199,
              "nodeType": "Return",
              "src": "743:77:47"
            }
          ]
        },
        "id": 5201,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "mulUFixed",
        "nameLocation": "686:9:47",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 5177,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5173,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "703:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5201,
              "src": "696:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5172,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5171,
                  "name": "UFixed",
                  "nameLocations": [
                    "696:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "696:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "696:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 5176,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "713:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5201,
              "src": "706:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5175,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5174,
                  "name": "UFixed",
                  "nameLocations": [
                    "706:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "706:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "706:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "695:20:47"
        },
        "returnParameters": {
          "id": 5181,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5180,
              "mutability": "mutable",
              "name": "",
              "nameLocation": "-1:-1:-1",
              "nodeType": "VariableDeclaration",
              "scope": 5201,
              "src": "729:6:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5179,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5178,
                  "name": "UFixed",
                  "nameLocations": [
                    "729:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "729:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "729:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "728:8:47"
        },
        "scope": 5592,
        "src": "677:146:47",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 5241,
          "nodeType": "Block",
          "src": "885:199:47",
          "statements": [
            {
              "expression": {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 5219,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 5216,
                          "name": "b",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5207,
                          "src": "913:1:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                            "typeString": "UFixed"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                            "typeString": "UFixed"
                          }
                        ],
                        "expression": {
                          "id": 5214,
                          "name": "UFixed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5099,
                          "src": "899:6:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                            "typeString": "type(UFixed)"
                          }
                        },
                        "id": 5215,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "906:6:47",
                        "memberName": "unwrap",
                        "nodeType": "MemberAccess",
                        "src": "899:13:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                          "typeString": "function (UFixed) pure returns (uint256)"
                        }
                      },
                      "id": 5217,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "899:16:47",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 5218,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "918:1:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "899:20:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  {
                    "hexValue": "4552524f523a55464d2d3032303a44495649534f525f5a45524f",
                    "id": 5220,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "921:28:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_0036acbc7abf528bdd50b9dc8e2fb346ad1d6fa83f7221af1785632d0711cf59",
                      "typeString": "literal_string \"ERROR:UFM-020:DIVISOR_ZERO\""
                    },
                    "value": "ERROR:UFM-020:DIVISOR_ZERO"
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    {
                      "typeIdentifier": "t_stringliteral_0036acbc7abf528bdd50b9dc8e2fb346ad1d6fa83f7221af1785632d0711cf59",
                      "typeString": "literal_string \"ERROR:UFM-020:DIVISOR_ZERO\""
                    }
                  ],
                  "id": 5213,
                  "name": "require",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [
                    -18,
                    -18
                  ],
                  "referencedDeclaration": -18,
                  "src": "891:7:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                    "typeString": "function (bool,string memory) pure"
                  }
                },
                "id": 5221,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "891:59:47",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_tuple$__$",
                  "typeString": "tuple()"
                }
              },
              "id": 5222,
              "nodeType": "ExpressionStatement",
              "src": "891:59:47"
            },
            {
              "expression": {
                "arguments": [
                  {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5229,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5204,
                            "src": "1024:1:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                              "typeString": "UFixed"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                              "typeString": "UFixed"
                            }
                          ],
                          "expression": {
                            "id": 5227,
                            "name": "UFixed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5099,
                            "src": "1010:6:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                              "typeString": "type(UFixed)"
                            }
                          },
                          "id": 5228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1017:6:47",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "src": "1010:13:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                            "typeString": "function (UFixed) pure returns (uint256)"
                          }
                        },
                        "id": 5230,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1010:16:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        "id": 5233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "3130",
                          "id": 5231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1041:2:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10_by_1",
                            "typeString": "int_const 10"
                          },
                          "value": "10"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "hexValue": "3138",
                          "id": 5232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1047:2:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          "value": "18"
                        },
                        "src": "1041:8:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 5236,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5207,
                            "src": "1077:1:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                              "typeString": "UFixed"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                              "typeString": "UFixed"
                            }
                          ],
                          "expression": {
                            "id": 5234,
                            "name": "UFixed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5099,
                            "src": "1063:6:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                              "typeString": "type(UFixed)"
                            }
                          },
                          "id": 5235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1070:6:47",
                          "memberName": "unwrap",
                          "nodeType": "MemberAccess",
                          "src": "1063:13:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                            "typeString": "function (UFixed) pure returns (uint256)"
                          }
                        },
                        "id": 5237,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1063:16:47",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                          "typeString": "int_const 1000000000000000000"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 5225,
                        "name": "Math",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13636,
                        "src": "985:4:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Math_$13636_$",
                          "typeString": "type(library Math)"
                        }
                      },
                      "id": 5226,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "990:6:47",
                      "memberName": "mulDiv",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12984,
                      "src": "985:11:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 5238,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "985:95:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  ],
                  "expression": {
                    "id": 5223,
                    "name": "UFixed",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5099,
                    "src": "964:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                      "typeString": "type(UFixed)"
                    }
                  },
                  "id": 5224,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberLocation": "971:4:47",
                  "memberName": "wrap",
                  "nodeType": "MemberAccess",
                  "src": "964:11:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UFixed_$5099_$",
                    "typeString": "function (uint256) pure returns (UFixed)"
                  }
                },
                "id": 5239,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "kind": "functionCall",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "964:117:47",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "functionReturnParameters": 5212,
              "id": 5240,
              "nodeType": "Return",
              "src": "957:124:47"
            }
          ]
        },
        "id": 5242,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "divUFixed",
        "nameLocation": "834:9:47",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 5208,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5204,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "851:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5242,
              "src": "844:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5203,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5202,
                  "name": "UFixed",
                  "nameLocations": [
                    "844:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "844:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "844:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 5207,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "861:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5242,
              "src": "854:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5206,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5205,
                  "name": "UFixed",
                  "nameLocations": [
                    "854:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "854:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "854:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "843:20:47"
        },
        "returnParameters": {
          "id": 5212,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5211,
              "mutability": "mutable",
              "name": "",
              "nameLocation": "-1:-1:-1",
              "nodeType": "VariableDeclaration",
              "scope": 5242,
              "src": "877:6:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5210,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5209,
                  "name": "UFixed",
                  "nameLocations": [
                    "877:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "877:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "877:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "876:8:47"
        },
        "scope": 5592,
        "src": "825:259:47",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 5263,
          "nodeType": "Block",
          "src": "1157:51:47",
          "statements": [
            {
              "expression": {
                "commonType": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "id": 5261,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "arguments": [
                    {
                      "id": 5255,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5245,
                      "src": "1184:1:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    ],
                    "expression": {
                      "id": 5253,
                      "name": "UFixed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5099,
                      "src": "1170:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                        "typeString": "type(UFixed)"
                      }
                    },
                    "id": 5254,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1177:6:47",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1170:13:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                      "typeString": "function (UFixed) pure returns (uint256)"
                    }
                  },
                  "id": 5256,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1170:16:47",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": ">",
                "rightExpression": {
                  "arguments": [
                    {
                      "id": 5259,
                      "name": "b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5248,
                      "src": "1203:1:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    ],
                    "expression": {
                      "id": 5257,
                      "name": "UFixed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5099,
                      "src": "1189:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                        "typeString": "type(UFixed)"
                      }
                    },
                    "id": 5258,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1196:6:47",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1189:13:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                      "typeString": "function (UFixed) pure returns (uint256)"
                    }
                  },
                  "id": 5260,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1189:16:47",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "src": "1170:35:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "functionReturnParameters": 5252,
              "id": 5262,
              "nodeType": "Return",
              "src": "1163:42:47"
            }
          ]
        },
        "id": 5264,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "gtUFixed",
        "nameLocation": "1095:8:47",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 5249,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5245,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "1111:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5264,
              "src": "1104:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5244,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5243,
                  "name": "UFixed",
                  "nameLocations": [
                    "1104:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "1104:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "1104:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 5248,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "1121:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5264,
              "src": "1114:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5247,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5246,
                  "name": "UFixed",
                  "nameLocations": [
                    "1114:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "1114:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "1114:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1103:20:47"
        },
        "returnParameters": {
          "id": 5252,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5251,
              "mutability": "mutable",
              "name": "isGreaterThan",
              "nameLocation": "1142:13:47",
              "nodeType": "VariableDeclaration",
              "scope": 5264,
              "src": "1137:18:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 5250,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1137:4:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1136:20:47"
        },
        "scope": 5592,
        "src": "1086:122:47",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 5285,
          "nodeType": "Block",
          "src": "1282:52:47",
          "statements": [
            {
              "expression": {
                "commonType": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "id": 5283,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "arguments": [
                    {
                      "id": 5277,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5267,
                      "src": "1309:1:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    ],
                    "expression": {
                      "id": 5275,
                      "name": "UFixed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5099,
                      "src": "1295:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                        "typeString": "type(UFixed)"
                      }
                    },
                    "id": 5276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1302:6:47",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1295:13:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                      "typeString": "function (UFixed) pure returns (uint256)"
                    }
                  },
                  "id": 5278,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1295:16:47",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": ">=",
                "rightExpression": {
                  "arguments": [
                    {
                      "id": 5281,
                      "name": "b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5270,
                      "src": "1329:1:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    ],
                    "expression": {
                      "id": 5279,
                      "name": "UFixed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5099,
                      "src": "1315:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                        "typeString": "type(UFixed)"
                      }
                    },
                    "id": 5280,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1322:6:47",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1315:13:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                      "typeString": "function (UFixed) pure returns (uint256)"
                    }
                  },
                  "id": 5282,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1315:16:47",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "src": "1295:36:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "functionReturnParameters": 5274,
              "id": 5284,
              "nodeType": "Return",
              "src": "1288:43:47"
            }
          ]
        },
        "id": 5286,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "gteUFixed",
        "nameLocation": "1219:9:47",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 5271,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5267,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "1236:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5286,
              "src": "1229:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5266,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5265,
                  "name": "UFixed",
                  "nameLocations": [
                    "1229:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "1229:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "1229:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 5270,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "1246:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5286,
              "src": "1239:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5269,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5268,
                  "name": "UFixed",
                  "nameLocations": [
                    "1239:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "1239:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "1239:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1228:20:47"
        },
        "returnParameters": {
          "id": 5274,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5273,
              "mutability": "mutable",
              "name": "isGreaterThan",
              "nameLocation": "1267:13:47",
              "nodeType": "VariableDeclaration",
              "scope": 5286,
              "src": "1262:18:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 5272,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1262:4:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1261:20:47"
        },
        "scope": 5592,
        "src": "1210:124:47",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 5307,
          "nodeType": "Block",
          "src": "1407:51:47",
          "statements": [
            {
              "expression": {
                "commonType": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "id": 5305,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "arguments": [
                    {
                      "id": 5299,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5289,
                      "src": "1434:1:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    ],
                    "expression": {
                      "id": 5297,
                      "name": "UFixed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5099,
                      "src": "1420:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                        "typeString": "type(UFixed)"
                      }
                    },
                    "id": 5298,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1427:6:47",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1420:13:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                      "typeString": "function (UFixed) pure returns (uint256)"
                    }
                  },
                  "id": 5300,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1420:16:47",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": "<",
                "rightExpression": {
                  "arguments": [
                    {
                      "id": 5303,
                      "name": "b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5292,
                      "src": "1453:1:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    ],
                    "expression": {
                      "id": 5301,
                      "name": "UFixed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5099,
                      "src": "1439:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                        "typeString": "type(UFixed)"
                      }
                    },
                    "id": 5302,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1446:6:47",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1439:13:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                      "typeString": "function (UFixed) pure returns (uint256)"
                    }
                  },
                  "id": 5304,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1439:16:47",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "src": "1420:35:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "functionReturnParameters": 5296,
              "id": 5306,
              "nodeType": "Return",
              "src": "1413:42:47"
            }
          ]
        },
        "id": 5308,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "ltUFixed",
        "nameLocation": "1345:8:47",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 5293,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5289,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "1361:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5308,
              "src": "1354:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5288,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5287,
                  "name": "UFixed",
                  "nameLocations": [
                    "1354:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "1354:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "1354:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 5292,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "1371:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5308,
              "src": "1364:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5291,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5290,
                  "name": "UFixed",
                  "nameLocations": [
                    "1364:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "1364:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "1364:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1353:20:47"
        },
        "returnParameters": {
          "id": 5296,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5295,
              "mutability": "mutable",
              "name": "isGreaterThan",
              "nameLocation": "1392:13:47",
              "nodeType": "VariableDeclaration",
              "scope": 5308,
              "src": "1387:18:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 5294,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1387:4:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1386:20:47"
        },
        "scope": 5592,
        "src": "1336:122:47",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 5329,
          "nodeType": "Block",
          "src": "1532:52:47",
          "statements": [
            {
              "expression": {
                "commonType": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "id": 5327,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "arguments": [
                    {
                      "id": 5321,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5311,
                      "src": "1559:1:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    ],
                    "expression": {
                      "id": 5319,
                      "name": "UFixed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5099,
                      "src": "1545:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                        "typeString": "type(UFixed)"
                      }
                    },
                    "id": 5320,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1552:6:47",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1545:13:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                      "typeString": "function (UFixed) pure returns (uint256)"
                    }
                  },
                  "id": 5322,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1545:16:47",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": "<=",
                "rightExpression": {
                  "arguments": [
                    {
                      "id": 5325,
                      "name": "b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5314,
                      "src": "1579:1:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    ],
                    "expression": {
                      "id": 5323,
                      "name": "UFixed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5099,
                      "src": "1565:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                        "typeString": "type(UFixed)"
                      }
                    },
                    "id": 5324,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1572:6:47",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1565:13:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                      "typeString": "function (UFixed) pure returns (uint256)"
                    }
                  },
                  "id": 5326,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1565:16:47",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "src": "1545:36:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "functionReturnParameters": 5318,
              "id": 5328,
              "nodeType": "Return",
              "src": "1538:43:47"
            }
          ]
        },
        "id": 5330,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "lteUFixed",
        "nameLocation": "1469:9:47",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 5315,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5311,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "1486:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5330,
              "src": "1479:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5310,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5309,
                  "name": "UFixed",
                  "nameLocations": [
                    "1479:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "1479:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "1479:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 5314,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "1496:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5330,
              "src": "1489:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5313,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5312,
                  "name": "UFixed",
                  "nameLocations": [
                    "1489:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "1489:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "1489:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1478:20:47"
        },
        "returnParameters": {
          "id": 5318,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5317,
              "mutability": "mutable",
              "name": "isGreaterThan",
              "nameLocation": "1517:13:47",
              "nodeType": "VariableDeclaration",
              "scope": 5330,
              "src": "1512:18:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 5316,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1512:4:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1511:20:47"
        },
        "scope": 5592,
        "src": "1460:124:47",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 5351,
          "nodeType": "Block",
          "src": "1651:52:47",
          "statements": [
            {
              "expression": {
                "commonType": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "id": 5349,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "arguments": [
                    {
                      "id": 5343,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5333,
                      "src": "1678:1:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    ],
                    "expression": {
                      "id": 5341,
                      "name": "UFixed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5099,
                      "src": "1664:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                        "typeString": "type(UFixed)"
                      }
                    },
                    "id": 5342,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1671:6:47",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1664:13:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                      "typeString": "function (UFixed) pure returns (uint256)"
                    }
                  },
                  "id": 5344,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1664:16:47",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": "==",
                "rightExpression": {
                  "arguments": [
                    {
                      "id": 5347,
                      "name": "b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5336,
                      "src": "1698:1:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    ],
                    "expression": {
                      "id": 5345,
                      "name": "UFixed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5099,
                      "src": "1684:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                        "typeString": "type(UFixed)"
                      }
                    },
                    "id": 5346,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1691:6:47",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1684:13:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                      "typeString": "function (UFixed) pure returns (uint256)"
                    }
                  },
                  "id": 5348,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1684:16:47",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "src": "1664:36:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "functionReturnParameters": 5340,
              "id": 5350,
              "nodeType": "Return",
              "src": "1657:43:47"
            }
          ]
        },
        "id": 5352,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "eqUFixed",
        "nameLocation": "1595:8:47",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 5337,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5333,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "1611:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5352,
              "src": "1604:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5332,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5331,
                  "name": "UFixed",
                  "nameLocations": [
                    "1604:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "1604:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "1604:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 5336,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "1621:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5352,
              "src": "1614:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5335,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5334,
                  "name": "UFixed",
                  "nameLocations": [
                    "1614:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "1614:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "1614:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1603:20:47"
        },
        "returnParameters": {
          "id": 5340,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5339,
              "mutability": "mutable",
              "name": "isEqual",
              "nameLocation": "1642:7:47",
              "nodeType": "VariableDeclaration",
              "scope": 5352,
              "src": "1637:12:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 5338,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1637:4:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1636:14:47"
        },
        "scope": 5592,
        "src": "1586:117:47",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 5367,
          "nodeType": "Block",
          "src": "1754:36:47",
          "statements": [
            {
              "expression": {
                "commonType": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "id": 5365,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "arguments": [
                    {
                      "id": 5362,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5355,
                      "src": "1781:1:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    ],
                    "expression": {
                      "id": 5360,
                      "name": "UFixed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5099,
                      "src": "1767:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                        "typeString": "type(UFixed)"
                      }
                    },
                    "id": 5361,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1774:6:47",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1767:13:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                      "typeString": "function (UFixed) pure returns (uint256)"
                    }
                  },
                  "id": 5363,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1767:16:47",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": ">",
                "rightExpression": {
                  "hexValue": "30",
                  "id": 5364,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1786:1:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  },
                  "value": "0"
                },
                "src": "1767:20:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "functionReturnParameters": 5359,
              "id": 5366,
              "nodeType": "Return",
              "src": "1760:27:47"
            }
          ]
        },
        "id": 5368,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "gtz",
        "nameLocation": "1714:3:47",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 5356,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5355,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "1725:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5368,
              "src": "1718:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5354,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5353,
                  "name": "UFixed",
                  "nameLocations": [
                    "1718:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "1718:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "1718:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1717:10:47"
        },
        "returnParameters": {
          "id": 5359,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5358,
              "mutability": "mutable",
              "name": "isZero",
              "nameLocation": "1746:6:47",
              "nodeType": "VariableDeclaration",
              "scope": 5368,
              "src": "1741:11:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 5357,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1741:4:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1740:13:47"
        },
        "scope": 5592,
        "src": "1705:85:47",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 5383,
          "nodeType": "Block",
          "src": "1841:37:47",
          "statements": [
            {
              "expression": {
                "commonType": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "id": 5381,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "arguments": [
                    {
                      "id": 5378,
                      "name": "a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5371,
                      "src": "1868:1:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    ],
                    "expression": {
                      "id": 5376,
                      "name": "UFixed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5099,
                      "src": "1854:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                        "typeString": "type(UFixed)"
                      }
                    },
                    "id": 5377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberLocation": "1861:6:47",
                    "memberName": "unwrap",
                    "nodeType": "MemberAccess",
                    "src": "1854:13:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                      "typeString": "function (UFixed) pure returns (uint256)"
                    }
                  },
                  "id": 5379,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": false,
                  "kind": "functionCall",
                  "lValueRequested": false,
                  "nameLocations": [],
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "1854:16:47",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": "==",
                "rightExpression": {
                  "hexValue": "30",
                  "id": 5380,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1874:1:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  },
                  "value": "0"
                },
                "src": "1854:21:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "functionReturnParameters": 5375,
              "id": 5382,
              "nodeType": "Return",
              "src": "1847:28:47"
            }
          ]
        },
        "id": 5384,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "eqz",
        "nameLocation": "1801:3:47",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 5372,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5371,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "1812:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5384,
              "src": "1805:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5370,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5369,
                  "name": "UFixed",
                  "nameLocations": [
                    "1805:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "1805:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "1805:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1804:10:47"
        },
        "returnParameters": {
          "id": 5375,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5374,
              "mutability": "mutable",
              "name": "isZero",
              "nameLocation": "1833:6:47",
              "nodeType": "VariableDeclaration",
              "scope": 5384,
              "src": "1828:11:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              },
              "typeName": {
                "id": 5373,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1828:4:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1827:13:47"
        },
        "scope": 5592,
        "src": "1792:86:47",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "body": {
          "id": 5409,
          "nodeType": "Block",
          "src": "1936:66:47",
          "statements": [
            {
              "condition": {
                "commonType": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                },
                "function": 5264,
                "id": 5398,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "id": 5396,
                  "name": "a",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5387,
                  "src": "1945:1:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": ">",
                "rightExpression": {
                  "id": 5397,
                  "name": "b",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5390,
                  "src": "1949:1:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  }
                },
                "src": "1945:5:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              },
              "id": 5404,
              "nodeType": "IfStatement",
              "src": "1942:39:47",
              "trueBody": {
                "id": 5403,
                "nodeType": "Block",
                "src": "1952:29:47",
                "statements": [
                  {
                    "expression": {
                      "commonType": {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      },
                      "function": 5170,
                      "id": 5401,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 5399,
                        "name": "a",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5387,
                        "src": "1969:1:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                          "typeString": "UFixed"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "id": 5400,
                        "name": "b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5390,
                        "src": "1973:1:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                          "typeString": "UFixed"
                        }
                      },
                      "src": "1969:5:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                        "typeString": "UFixed"
                      }
                    },
                    "functionReturnParameters": 5395,
                    "id": 5402,
                    "nodeType": "Return",
                    "src": "1962:12:47"
                  }
                ]
              }
            },
            {
              "expression": {
                "commonType": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                },
                "function": 5170,
                "id": 5407,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "leftExpression": {
                  "id": 5405,
                  "name": "b",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5390,
                  "src": "1994:1:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": "-",
                "rightExpression": {
                  "id": 5406,
                  "name": "a",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5387,
                  "src": "1998:1:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  }
                },
                "src": "1994:5:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "functionReturnParameters": 5395,
              "id": 5408,
              "nodeType": "Return",
              "src": "1987:12:47"
            }
          ]
        },
        "id": 5410,
        "implemented": true,
        "kind": "freeFunction",
        "modifiers": [],
        "name": "delta",
        "nameLocation": "1889:5:47",
        "nodeType": "FunctionDefinition",
        "parameters": {
          "id": 5391,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5387,
              "mutability": "mutable",
              "name": "a",
              "nameLocation": "1902:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5410,
              "src": "1895:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5386,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5385,
                  "name": "UFixed",
                  "nameLocations": [
                    "1895:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "1895:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "1895:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": false,
              "id": 5390,
              "mutability": "mutable",
              "name": "b",
              "nameLocation": "1912:1:47",
              "nodeType": "VariableDeclaration",
              "scope": 5410,
              "src": "1905:8:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5389,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5388,
                  "name": "UFixed",
                  "nameLocations": [
                    "1905:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "1905:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "1905:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1894:20:47"
        },
        "returnParameters": {
          "id": 5395,
          "nodeType": "ParameterList",
          "parameters": [
            {
              "constant": false,
              "id": 5394,
              "mutability": "mutable",
              "name": "",
              "nameLocation": "-1:-1:-1",
              "nodeType": "VariableDeclaration",
              "scope": 5410,
              "src": "1928:6:47",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                "typeString": "UFixed"
              },
              "typeName": {
                "id": 5393,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 5392,
                  "name": "UFixed",
                  "nameLocations": [
                    "1928:6:47"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 5099,
                  "src": "1928:6:47"
                },
                "referencedDeclaration": 5099,
                "src": "1928:6:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                  "typeString": "UFixed"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "1927:8:47"
        },
        "scope": 5592,
        "src": "1880:122:47",
        "stateMutability": "pure",
        "virtual": false,
        "visibility": "internal"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "UFixedType",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 5591,
        "linearizedBaseContracts": [
          5591
        ],
        "name": "UFixedType",
        "nameLocation": "2013:10:47",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "UFixedType.Rounding",
            "id": 5414,
            "members": [
              {
                "id": 5411,
                "name": "Down",
                "nameLocation": "2055:4:47",
                "nodeType": "EnumValue",
                "src": "2055:4:47"
              },
              {
                "id": 5412,
                "name": "Up",
                "nameLocation": "2085:2:47",
                "nodeType": "EnumValue",
                "src": "2085:2:47"
              },
              {
                "id": 5413,
                "name": "HalfUp",
                "nameLocation": "2114:6:47",
                "nodeType": "EnumValue",
                "src": "2114:6:47"
              }
            ],
            "name": "Rounding",
            "nameLocation": "2036:8:47",
            "nodeType": "EnumDefinition",
            "src": "2031:119:47"
          },
          {
            "constant": true,
            "functionSelector": "1a12cd47",
            "id": 5417,
            "mutability": "constant",
            "name": "EXP",
            "nameLocation": "2177:3:47",
            "nodeType": "VariableDeclaration",
            "scope": 5591,
            "src": "2156:29:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_int8",
              "typeString": "int8"
            },
            "typeName": {
              "id": 5415,
              "name": "int8",
              "nodeType": "ElementaryTypeName",
              "src": "2156:4:47",
              "typeDescriptions": {
                "typeIdentifier": "t_int8",
                "typeString": "int8"
              }
            },
            "value": {
              "hexValue": "3138",
              "id": 5416,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2183:2:47",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_18_by_1",
                "typeString": "int_const 18"
              },
              "value": "18"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "functionSelector": "059f8b16",
            "id": 5428,
            "mutability": "constant",
            "name": "MULTIPLIER",
            "nameLocation": "2215:10:47",
            "nodeType": "VariableDeclaration",
            "scope": 5591,
            "src": "2191:63:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5418,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2191:7:47",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "commonType": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "id": 5427,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "hexValue": "3130",
                "id": 5419,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2228:2:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_10_by_1",
                  "typeString": "int_const 10"
                },
                "value": "10"
              },
              "nodeType": "BinaryOperation",
              "operator": "**",
              "rightExpression": {
                "arguments": [
                  {
                    "arguments": [
                      {
                        "id": 5424,
                        "name": "EXP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5417,
                        "src": "2249:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      ],
                      "id": 5423,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "2242:6:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int256_$",
                        "typeString": "type(int256)"
                      },
                      "typeName": {
                        "id": 5422,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2242:6:47",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 5425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2242:11:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  ],
                  "id": 5421,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "nodeType": "ElementaryTypeNameExpression",
                  "src": "2234:7:47",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_uint256_$",
                    "typeString": "type(uint256)"
                  },
                  "typeName": {
                    "id": 5420,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2234:7:47",
                    "typeDescriptions": {}
                  }
                },
                "id": 5426,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "typeConversion",
                "lValueRequested": false,
                "nameLocations": [],
                "names": [],
                "nodeType": "FunctionCall",
                "src": "2234:20:47",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "src": "2228:26:47",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "functionSelector": "eb646d71",
            "id": 5433,
            "mutability": "constant",
            "name": "MULTIPLIER_HALF",
            "nameLocation": "2284:15:47",
            "nodeType": "VariableDeclaration",
            "scope": 5591,
            "src": "2260:56:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 5429,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "2260:7:47",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "commonType": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "id": 5432,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "id": 5430,
                "name": "MULTIPLIER",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 5428,
                "src": "2302:10:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "BinaryOperation",
              "operator": "/",
              "rightExpression": {
                "hexValue": "32",
                "id": 5431,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2315:1:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_2_by_1",
                  "typeString": "int_const 2"
                },
                "value": "2"
              },
              "src": "2302:14:47",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "functionSelector": "f30ed598",
            "id": 5438,
            "mutability": "constant",
            "name": "ROUNDING_DEFAULT",
            "nameLocation": "2352:16:47",
            "nodeType": "VariableDeclaration",
            "scope": 5591,
            "src": "2327:59:47",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_enum$_Rounding_$5414",
              "typeString": "enum UFixedType.Rounding"
            },
            "typeName": {
              "id": 5435,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 5434,
                "name": "Rounding",
                "nameLocations": [
                  "2327:8:47"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 5414,
                "src": "2327:8:47"
              },
              "referencedDeclaration": 5414,
              "src": "2327:8:47",
              "typeDescriptions": {
                "typeIdentifier": "t_enum$_Rounding_$5414",
                "typeString": "enum UFixedType.Rounding"
              }
            },
            "value": {
              "expression": {
                "id": 5436,
                "name": "Rounding",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 5414,
                "src": "2371:8:47",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_enum$_Rounding_$5414_$",
                  "typeString": "type(enum UFixedType.Rounding)"
                }
              },
              "id": 5437,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "memberLocation": "2380:6:47",
              "memberName": "HalfUp",
              "nodeType": "MemberAccess",
              "referencedDeclaration": 5413,
              "src": "2371:15:47",
              "typeDescriptions": {
                "typeIdentifier": "t_enum$_Rounding_$5414",
                "typeString": "enum UFixedType.Rounding"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 5448,
              "nodeType": "Block",
              "src": "2442:34:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 5445,
                        "name": "EXP",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5417,
                        "src": "2465:3:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      ],
                      "id": 5444,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "2459:5:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint8_$",
                        "typeString": "type(uint8)"
                      },
                      "typeName": {
                        "id": 5443,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "2459:5:47",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 5446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2459:10:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 5442,
                  "id": 5447,
                  "nodeType": "Return",
                  "src": "2452:17:47"
                }
              ]
            },
            "functionSelector": "313ce567",
            "id": 5449,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "decimals",
            "nameLocation": "2402:8:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5439,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2410:2:47"
            },
            "returnParameters": {
              "id": 5442,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5441,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5449,
                  "src": "2433:7:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5440,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2433:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2432:9:47"
            },
            "scope": 5591,
            "src": "2393:83:47",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5464,
              "nodeType": "Block",
              "src": "2563:51:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5461,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 5459,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5451,
                          "src": "2592:1:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "id": 5460,
                          "name": "MULTIPLIER",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5428,
                          "src": "2596:10:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2592:14:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 5457,
                        "name": "UFixed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5099,
                        "src": "2580:6:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                          "typeString": "type(UFixed)"
                        }
                      },
                      "id": 5458,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "2587:4:47",
                      "memberName": "wrap",
                      "nodeType": "MemberAccess",
                      "src": "2580:11:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UFixed_$5099_$",
                        "typeString": "function (uint256) pure returns (UFixed)"
                      }
                    },
                    "id": 5462,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2580:27:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "functionReturnParameters": 5456,
                  "id": 5463,
                  "nodeType": "Return",
                  "src": "2573:34:47"
                }
              ]
            },
            "functionSelector": "92ae8ce0",
            "id": 5465,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "itof",
            "nameLocation": "2491:4:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5452,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5451,
                  "mutability": "mutable",
                  "name": "a",
                  "nameLocation": "2504:1:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 5465,
                  "src": "2496:9:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5450,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2496:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2495:11:47"
            },
            "returnParameters": {
              "id": 5456,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5455,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5465,
                  "src": "2551:6:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 5454,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5453,
                      "name": "UFixed",
                      "nameLocations": [
                        "2551:6:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "2551:6:47"
                    },
                    "referencedDeclaration": 5099,
                    "src": "2551:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2550:8:47"
            },
            "scope": 5591,
            "src": "2482:132:47",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5509,
              "nodeType": "Block",
              "src": "2711:206:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        },
                        "id": 5480,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_int8",
                            "typeString": "int8"
                          },
                          "id": 5478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5476,
                            "name": "EXP",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5417,
                            "src": "2729:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 5477,
                            "name": "exp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5469,
                            "src": "2735:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "src": "2729:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int8",
                            "typeString": "int8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 5479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2742:1:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2729:14:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552524f523a464d2d3031303a4558504f4e454e545f544f4f5f534d414c4c",
                        "id": 5481,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2745:33:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4d495950f5c172aad436b48bd71cfb4f6c8e25a718e4dfed9f3aa47d81796b5d",
                          "typeString": "literal_string \"ERROR:FM-010:EXPONENT_TOO_SMALL\""
                        },
                        "value": "ERROR:FM-010:EXPONENT_TOO_SMALL"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4d495950f5c172aad436b48bd71cfb4f6c8e25a718e4dfed9f3aa47d81796b5d",
                          "typeString": "literal_string \"ERROR:FM-010:EXPONENT_TOO_SMALL\""
                        }
                      ],
                      "id": 5475,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2721:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2721:58:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5483,
                  "nodeType": "ExpressionStatement",
                  "src": "2721:58:47"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        },
                        "id": 5491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_int8",
                            "typeString": "int8"
                          },
                          "id": 5487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5485,
                            "name": "EXP",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5417,
                            "src": "2797:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 5486,
                            "name": "exp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5469,
                            "src": "2803:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "src": "2797:9:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int8",
                            "typeString": "int8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_int8",
                            "typeString": "int8"
                          },
                          "id": 5490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "hexValue": "32",
                            "id": 5488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2810:1:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 5489,
                            "name": "EXP",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5417,
                            "src": "2814:3:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "src": "2810:7:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int8",
                            "typeString": "int8"
                          }
                        },
                        "src": "2797:20:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552524f523a464d2d3031313a4558504f4e454e545f544f4f5f4c41524745",
                        "id": 5492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2819:33:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1159605dddc4baf08c3689660d4e1a9b6b8d632fb2c3caec35eba5d5a7c1f099",
                          "typeString": "literal_string \"ERROR:FM-011:EXPONENT_TOO_LARGE\""
                        },
                        "value": "ERROR:FM-011:EXPONENT_TOO_LARGE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1159605dddc4baf08c3689660d4e1a9b6b8d632fb2c3caec35eba5d5a7c1f099",
                          "typeString": "literal_string \"ERROR:FM-011:EXPONENT_TOO_LARGE\""
                        }
                      ],
                      "id": 5484,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2789:7:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 5493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2789:64:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5494,
                  "nodeType": "ExpressionStatement",
                  "src": "2789:64:47"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5506,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 5497,
                          "name": "a",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5467,
                          "src": "2883:1:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "hexValue": "3130",
                            "id": 5498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2887:2:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "**",
                          "rightExpression": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int8",
                                  "typeString": "int8"
                                },
                                "id": 5503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 5501,
                                  "name": "EXP",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5417,
                                  "src": "2899:3:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int8",
                                    "typeString": "int8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 5502,
                                  "name": "exp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5469,
                                  "src": "2905:3:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int8",
                                    "typeString": "int8"
                                  }
                                },
                                "src": "2899:9:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int8",
                                  "typeString": "int8"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int8",
                                  "typeString": "int8"
                                }
                              ],
                              "id": 5500,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2893:5:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 5499,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "2893:5:47",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5504,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2893:16:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "2887:22:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2883:26:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 5495,
                        "name": "UFixed",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5099,
                        "src": "2871:6:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                          "typeString": "type(UFixed)"
                        }
                      },
                      "id": 5496,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "2878:4:47",
                      "memberName": "wrap",
                      "nodeType": "MemberAccess",
                      "src": "2871:11:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_UFixed_$5099_$",
                        "typeString": "function (uint256) pure returns (UFixed)"
                      }
                    },
                    "id": 5507,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2871:39:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "functionReturnParameters": 5474,
                  "id": 5508,
                  "nodeType": "Return",
                  "src": "2864:46:47"
                }
              ]
            },
            "functionSelector": "dd45daa1",
            "id": 5510,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "itof",
            "nameLocation": "2629:4:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5470,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5467,
                  "mutability": "mutable",
                  "name": "a",
                  "nameLocation": "2642:1:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 5510,
                  "src": "2634:9:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5466,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2634:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5469,
                  "mutability": "mutable",
                  "name": "exp",
                  "nameLocation": "2650:3:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 5510,
                  "src": "2645:8:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  },
                  "typeName": {
                    "id": 5468,
                    "name": "int8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2645:4:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2633:21:47"
            },
            "returnParameters": {
              "id": 5474,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5473,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5510,
                  "src": "2699:6:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 5472,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5471,
                      "name": "UFixed",
                      "nameLocations": [
                        "2699:6:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "2699:6:47"
                    },
                    "referencedDeclaration": 5099,
                    "src": "2699:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2698:8:47"
            },
            "scope": 5591,
            "src": "2620:297:47",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5523,
              "nodeType": "Block",
              "src": "3004:49:47",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 5519,
                        "name": "a",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5513,
                        "src": "3026:1:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                          "typeString": "UFixed"
                        }
                      },
                      {
                        "id": 5520,
                        "name": "ROUNDING_DEFAULT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5438,
                        "src": "3029:16:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$5414",
                          "typeString": "enum UFixedType.Rounding"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                          "typeString": "UFixed"
                        },
                        {
                          "typeIdentifier": "t_enum$_Rounding_$5414",
                          "typeString": "enum UFixedType.Rounding"
                        }
                      ],
                      "id": 5518,
                      "name": "ftoi",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5524,
                        5590
                      ],
                      "referencedDeclaration": 5590,
                      "src": "3021:4:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_UFixed_$5099_$_t_enum$_Rounding_$5414_$returns$_t_uint256_$",
                        "typeString": "function (UFixed,enum UFixedType.Rounding) pure returns (uint256)"
                      }
                    },
                    "id": 5521,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3021:25:47",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 5517,
                  "id": 5522,
                  "nodeType": "Return",
                  "src": "3014:32:47"
                }
              ]
            },
            "functionSelector": "d05b0452",
            "id": 5524,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "ftoi",
            "nameLocation": "2932:4:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5514,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5513,
                  "mutability": "mutable",
                  "name": "a",
                  "nameLocation": "2944:1:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 5524,
                  "src": "2937:8:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 5512,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5511,
                      "name": "UFixed",
                      "nameLocations": [
                        "2937:6:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "2937:6:47"
                    },
                    "referencedDeclaration": 5099,
                    "src": "2937:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2936:10:47"
            },
            "returnParameters": {
              "id": 5517,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5516,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5524,
                  "src": "2991:7:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5515,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2991:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2990:9:47"
            },
            "scope": 5591,
            "src": "2923:130:47",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5589,
              "nodeType": "Block",
              "src": "3159:394:47",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_enum$_Rounding_$5414",
                      "typeString": "enum UFixedType.Rounding"
                    },
                    "id": 5538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 5535,
                      "name": "rounding",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5530,
                      "src": "3172:8:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Rounding_$5414",
                        "typeString": "enum UFixedType.Rounding"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "expression": {
                        "id": 5536,
                        "name": "Rounding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5414,
                        "src": "3184:8:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Rounding_$5414_$",
                          "typeString": "type(enum UFixedType.Rounding)"
                        }
                      },
                      "id": 5537,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "3193:6:47",
                      "memberName": "HalfUp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5413,
                      "src": "3184:15:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Rounding_$5414",
                        "typeString": "enum UFixedType.Rounding"
                      }
                    },
                    "src": "3172:27:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_enum$_Rounding_$5414",
                        "typeString": "enum UFixedType.Rounding"
                      },
                      "id": 5558,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 5555,
                        "name": "rounding",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5530,
                        "src": "3324:8:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$5414",
                          "typeString": "enum UFixedType.Rounding"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "expression": {
                          "id": 5556,
                          "name": "Rounding",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5414,
                          "src": "3336:8:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_Rounding_$5414_$",
                            "typeString": "type(enum UFixedType.Rounding)"
                          }
                        },
                        "id": 5557,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "3345:4:47",
                        "memberName": "Down",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5411,
                        "src": "3336:13:47",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$5414",
                          "typeString": "enum UFixedType.Rounding"
                        }
                      },
                      "src": "3324:25:47",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 5586,
                      "nodeType": "Block",
                      "src": "3453:94:47",
                      "statements": [
                        {
                          "expression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 5577,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5527,
                                    "src": "3500:1:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                                      "typeString": "UFixed"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                                      "typeString": "UFixed"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5575,
                                    "name": "UFixed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5099,
                                    "src": "3486:6:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                                      "typeString": "type(UFixed)"
                                    }
                                  },
                                  "id": 5576,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "3493:6:47",
                                  "memberName": "unwrap",
                                  "nodeType": "MemberAccess",
                                  "src": "3486:13:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                                    "typeString": "function (UFixed) pure returns (uint256)"
                                  }
                                },
                                "id": 5578,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3486:16:47",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "31",
                                "id": 5579,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3504:1:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              {
                                "id": 5580,
                                "name": "MULTIPLIER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5428,
                                "src": "3507:10:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "expression": {
                                    "id": 5581,
                                    "name": "Math",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13636,
                                    "src": "3519:4:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Math_$13636_$",
                                      "typeString": "type(library Math)"
                                    }
                                  },
                                  "id": 5582,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3524:8:47",
                                  "memberName": "Rounding",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12778,
                                  "src": "3519:13:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Rounding_$12778_$",
                                    "typeString": "type(enum Math.Rounding)"
                                  }
                                },
                                "id": 5583,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "3533:2:47",
                                "memberName": "Up",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12776,
                                "src": "3519:16:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Rounding_$12778",
                                  "typeString": "enum Math.Rounding"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_Rounding_$12778",
                                  "typeString": "enum Math.Rounding"
                                }
                              ],
                              "expression": {
                                "id": 5573,
                                "name": "Math",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13636,
                                "src": "3474:4:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Math_$13636_$",
                                  "typeString": "type(library Math)"
                                }
                              },
                              "id": 5574,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3479:6:47",
                              "memberName": "mulDiv",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13028,
                              "src": "3474:11:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$12778_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,enum Math.Rounding) pure returns (uint256)"
                              }
                            },
                            "id": 5584,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3474:62:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 5534,
                          "id": 5585,
                          "nodeType": "Return",
                          "src": "3467:69:47"
                        }
                      ]
                    },
                    "id": 5587,
                    "nodeType": "IfStatement",
                    "src": "3321:226:47",
                    "trueBody": {
                      "id": 5572,
                      "nodeType": "Block",
                      "src": "3351:96:47",
                      "statements": [
                        {
                          "expression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 5563,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5527,
                                    "src": "3398:1:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                                      "typeString": "UFixed"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                                      "typeString": "UFixed"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5561,
                                    "name": "UFixed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5099,
                                    "src": "3384:6:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                                      "typeString": "type(UFixed)"
                                    }
                                  },
                                  "id": 5562,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "3391:6:47",
                                  "memberName": "unwrap",
                                  "nodeType": "MemberAccess",
                                  "src": "3384:13:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                                    "typeString": "function (UFixed) pure returns (uint256)"
                                  }
                                },
                                "id": 5564,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3384:16:47",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "31",
                                "id": 5565,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3402:1:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              {
                                "id": 5566,
                                "name": "MULTIPLIER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5428,
                                "src": "3405:10:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "expression": {
                                    "id": 5567,
                                    "name": "Math",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13636,
                                    "src": "3417:4:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Math_$13636_$",
                                      "typeString": "type(library Math)"
                                    }
                                  },
                                  "id": 5568,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3422:8:47",
                                  "memberName": "Rounding",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12778,
                                  "src": "3417:13:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Rounding_$12778_$",
                                    "typeString": "type(enum Math.Rounding)"
                                  }
                                },
                                "id": 5569,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "3431:4:47",
                                "memberName": "Down",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12775,
                                "src": "3417:18:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Rounding_$12778",
                                  "typeString": "enum Math.Rounding"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_Rounding_$12778",
                                  "typeString": "enum Math.Rounding"
                                }
                              ],
                              "expression": {
                                "id": 5559,
                                "name": "Math",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13636,
                                "src": "3372:4:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Math_$13636_$",
                                  "typeString": "type(library Math)"
                                }
                              },
                              "id": 5560,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3377:6:47",
                              "memberName": "mulDiv",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 13028,
                              "src": "3372:11:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$12778_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,enum Math.Rounding) pure returns (uint256)"
                              }
                            },
                            "id": 5570,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3372:64:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "functionReturnParameters": 5534,
                          "id": 5571,
                          "nodeType": "Return",
                          "src": "3365:71:47"
                        }
                      ]
                    }
                  },
                  "id": 5588,
                  "nodeType": "IfStatement",
                  "src": "3169:378:47",
                  "trueBody": {
                    "id": 5554,
                    "nodeType": "Block",
                    "src": "3201:114:47",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5546,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 5543,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5527,
                                    "src": "3248:1:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                                      "typeString": "UFixed"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                                      "typeString": "UFixed"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5541,
                                    "name": "UFixed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5099,
                                    "src": "3234:6:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_userDefinedValueType$_UFixed_$5099_$",
                                      "typeString": "type(UFixed)"
                                    }
                                  },
                                  "id": 5542,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "3241:6:47",
                                  "memberName": "unwrap",
                                  "nodeType": "MemberAccess",
                                  "src": "3234:13:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_UFixed_$5099_$returns$_t_uint256_$",
                                    "typeString": "function (UFixed) pure returns (uint256)"
                                  }
                                },
                                "id": 5544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3234:16:47",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "id": 5545,
                                "name": "MULTIPLIER_HALF",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5433,
                                "src": "3253:15:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3234:34:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "31",
                              "id": 5547,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3270:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            {
                              "id": 5548,
                              "name": "MULTIPLIER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5428,
                              "src": "3273:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "expression": {
                                  "id": 5549,
                                  "name": "Math",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13636,
                                  "src": "3285:4:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Math_$13636_$",
                                    "typeString": "type(library Math)"
                                  }
                                },
                                "id": 5550,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3290:8:47",
                                "memberName": "Rounding",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12778,
                                "src": "3285:13:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Rounding_$12778_$",
                                  "typeString": "type(enum Math.Rounding)"
                                }
                              },
                              "id": 5551,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "3299:4:47",
                              "memberName": "Down",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12775,
                              "src": "3285:18:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Rounding_$12778",
                                "typeString": "enum Math.Rounding"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_Rounding_$12778",
                                "typeString": "enum Math.Rounding"
                              }
                            ],
                            "expression": {
                              "id": 5539,
                              "name": "Math",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13636,
                              "src": "3222:4:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Math_$13636_$",
                                "typeString": "type(library Math)"
                              }
                            },
                            "id": 5540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3227:6:47",
                            "memberName": "mulDiv",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13028,
                            "src": "3222:11:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$12778_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256,enum Math.Rounding) pure returns (uint256)"
                            }
                          },
                          "id": 5552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3222:82:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 5534,
                        "id": 5553,
                        "nodeType": "Return",
                        "src": "3215:89:47"
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "8f24f601",
            "id": 5590,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "ftoi",
            "nameLocation": "3068:4:47",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5527,
                  "mutability": "mutable",
                  "name": "a",
                  "nameLocation": "3080:1:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 5590,
                  "src": "3073:8:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                    "typeString": "UFixed"
                  },
                  "typeName": {
                    "id": 5526,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5525,
                      "name": "UFixed",
                      "nameLocations": [
                        "3073:6:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5099,
                      "src": "3073:6:47"
                    },
                    "referencedDeclaration": 5099,
                    "src": "3073:6:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_UFixed_$5099",
                      "typeString": "UFixed"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5530,
                  "mutability": "mutable",
                  "name": "rounding",
                  "nameLocation": "3092:8:47",
                  "nodeType": "VariableDeclaration",
                  "scope": 5590,
                  "src": "3083:17:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Rounding_$5414",
                    "typeString": "enum UFixedType.Rounding"
                  },
                  "typeName": {
                    "id": 5529,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5528,
                      "name": "Rounding",
                      "nameLocations": [
                        "3083:8:47"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5414,
                      "src": "3083:8:47"
                    },
                    "referencedDeclaration": 5414,
                    "src": "3083:8:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Rounding_$5414",
                      "typeString": "enum UFixedType.Rounding"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3072:29:47"
            },
            "returnParameters": {
              "id": 5534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5533,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 5590,
                  "src": "3146:7:47",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5532,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3146:7:47",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3145:9:47"
            },
            "scope": 5591,
            "src": "3059:494:47",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 5592,
        "src": "2004:1551:47",
        "usedErrors": []
      }
    ],
    "src": "39:3517:47"
  },
  "bytecode": "608060405234801561001057600080fd5b506106dc806100206000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806392ae8ce01161006657806392ae8ce0146100e8578063d05b0452146100fb578063dd45daa11461010e578063eb646d7114610121578063f30ed5981461012957600080fd5b8063059f8b16146100985780631a12cd47146100b3578063313ce567146100ce5780638f24f601146100d5575b600080fd5b6100a061013e565b6040519081526020015b60405180910390f35b6100bb601281565b60405160009190910b81526020016100aa565b60126100a0565b6100a06100e3366004610431565b61014d565b6100a06100f6366004610465565b6101f3565b6100a0610109366004610465565b61020b565b6100a061011c36600461047e565b610218565b6100a061030e565b610131600281565b6040516100aa91906104bf565b61014a6012600a6105e1565b81565b60006002826002811115610163576101636104a9565b036101a9576101a260026101796012600a6105e1565b6101839190610603565b61018d9085610625565b600161019b6012600a6105e1565b6000610326565b90506101ed565b60008260028111156101bd576101bd6104a9565b036101d4576101a283600161019b6012600a6105e1565b6101a28360016101e66012600a6105e1565b6001610326565b92915050565b60006102016012600a6105e1565b6101ed9083610638565b60006101ed82600261014d565b60008061022683601261064f565b60000b121561027c5760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a464d2d3031303a4558504f4e454e545f544f4f5f534d414c4c0060448201526064015b60405180910390fd5b61028860126002610670565b60000b61029683601261064f565b60000b13156102e75760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a464d2d3031313a4558504f4e454e545f544f4f5f4c41524745006044820152606401610273565b6102f282601261064f565b6102fd90600a610697565b6103079084610638565b9392505050565b600261031c6012600a6105e1565b61014a9190610603565b600080610334868686610383565b9050600183600281111561034a5761034a6104a9565b148015610367575060008480610362576103626105ed565b868809115b1561037a57610377600182610625565b90505b95945050505050565b60008080600019858709858702925082811083820303915050806000036103bd578382816103b3576103b36105ed565b0492505050610307565b8084116103c957600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000806040838503121561044457600080fd5b8235915060208301356003811061045a57600080fd5b809150509250929050565b60006020828403121561047757600080fd5b5035919050565b6000806040838503121561049157600080fd5b8235915060208301358060000b811461045a57600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600383106104e157634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561053857816000190482111561051e5761051e6104e7565b8085161561052b57918102915b93841c9390800290610502565b509250929050565b60008261054f575060016101ed565b8161055c575060006101ed565b8160018114610572576002811461057c57610598565b60019150506101ed565b60ff84111561058d5761058d6104e7565b50506001821b6101ed565b5060208310610133831016604e8410600b84101617156105bb575081810a6101ed565b6105c583836104fd565b80600019048211156105d9576105d96104e7565b029392505050565b60006103078383610540565b634e487b7160e01b600052601260045260246000fd5b60008261062057634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156101ed576101ed6104e7565b80820281158282048414176101ed576101ed6104e7565b600081810b9083900b01607f8113607f19821217156101ed576101ed6104e7565b60008260000b8260000b028060000b9150808214610690576106906104e7565b5092915050565b600061030760ff84168361054056fea26469706673582212208105e68fb7bfb10fa005b07efb45a75a332008143b2ec901a8c1ff740fc109e264736f6c63430008130033",
  "bytecodeSha1": "cae5ace7fa92af77358911dfcf26fd0c73a4dfcf",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.19+commit.7dd6d404"
  },
  "contractName": "UFixedType",
  "coverageMap": {
    "branches": {
      "30": {
        "Math.mulDiv": {
          "24": [
            5938,
            5961,
            false
          ],
          "25": [
            5965,
            5994,
            false
          ],
          "26": [
            2516,
            2526,
            false
          ],
          "27": [
            2697,
            2716,
            true
          ]
        }
      },
      "47": {
        "UFixedType.ftoi": {
          "20": [
            3172,
            3199,
            false
          ],
          "21": [
            3324,
            3349,
            false
          ]
        },
        "UFixedType.itof": {
          "22": [
            2729,
            2743,
            true
          ],
          "23": [
            2797,
            2817,
            true
          ]
        }
      }
    },
    "statements": {
      "30": {
        "Math.mulDiv": {
          "8": [
            6010,
            6021
          ],
          "9": [
            6041,
            6054
          ],
          "10": [
            2546,
            2572
          ],
          "11": [
            2689,
            2717
          ],
          "12": [
            4704,
            4740
          ],
          "13": [
            4773,
            4809
          ],
          "14": [
            4843,
            4879
          ],
          "15": [
            4913,
            4949
          ],
          "16": [
            4983,
            5019
          ],
          "17": [
            5054,
            5090
          ],
          "18": [
            4109,
            4130
          ],
          "19": [
            5524,
            5548
          ]
        }
      },
      "47": {
        "UFixedType.ftoi": {
          "0": [
            3215,
            3304
          ],
          "1": [
            3365,
            3436
          ],
          "2": [
            3467,
            3536
          ],
          "4": [
            3014,
            3046
          ]
        },
        "UFixedType.itof": {
          "3": [
            2573,
            2607
          ],
          "5": [
            2721,
            2779
          ],
          "6": [
            2789,
            2853
          ],
          "7": [
            2864,
            2910
          ]
        }
      }
    }
  },
  "dependencies": [
    "OpenZeppelin/openzeppelin-contracts@4.8.2/Math"
  ],
  "deployedBytecode": "608060405234801561001057600080fd5b50600436106100935760003560e01c806392ae8ce01161006657806392ae8ce0146100e8578063d05b0452146100fb578063dd45daa11461010e578063eb646d7114610121578063f30ed5981461012957600080fd5b8063059f8b16146100985780631a12cd47146100b3578063313ce567146100ce5780638f24f601146100d5575b600080fd5b6100a061013e565b6040519081526020015b60405180910390f35b6100bb601281565b60405160009190910b81526020016100aa565b60126100a0565b6100a06100e3366004610431565b61014d565b6100a06100f6366004610465565b6101f3565b6100a0610109366004610465565b61020b565b6100a061011c36600461047e565b610218565b6100a061030e565b610131600281565b6040516100aa91906104bf565b61014a6012600a6105e1565b81565b60006002826002811115610163576101636104a9565b036101a9576101a260026101796012600a6105e1565b6101839190610603565b61018d9085610625565b600161019b6012600a6105e1565b6000610326565b90506101ed565b60008260028111156101bd576101bd6104a9565b036101d4576101a283600161019b6012600a6105e1565b6101a28360016101e66012600a6105e1565b6001610326565b92915050565b60006102016012600a6105e1565b6101ed9083610638565b60006101ed82600261014d565b60008061022683601261064f565b60000b121561027c5760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a464d2d3031303a4558504f4e454e545f544f4f5f534d414c4c0060448201526064015b60405180910390fd5b61028860126002610670565b60000b61029683601261064f565b60000b13156102e75760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a464d2d3031313a4558504f4e454e545f544f4f5f4c41524745006044820152606401610273565b6102f282601261064f565b6102fd90600a610697565b6103079084610638565b9392505050565b600261031c6012600a6105e1565b61014a9190610603565b600080610334868686610383565b9050600183600281111561034a5761034a6104a9565b148015610367575060008480610362576103626105ed565b868809115b1561037a57610377600182610625565b90505b95945050505050565b60008080600019858709858702925082811083820303915050806000036103bd578382816103b3576103b36105ed565b0492505050610307565b8084116103c957600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000806040838503121561044457600080fd5b8235915060208301356003811061045a57600080fd5b809150509250929050565b60006020828403121561047757600080fd5b5035919050565b6000806040838503121561049157600080fd5b8235915060208301358060000b811461045a57600080fd5b634e487b7160e01b600052602160045260246000fd5b60208101600383106104e157634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561053857816000190482111561051e5761051e6104e7565b8085161561052b57918102915b93841c9390800290610502565b509250929050565b60008261054f575060016101ed565b8161055c575060006101ed565b8160018114610572576002811461057c57610598565b60019150506101ed565b60ff84111561058d5761058d6104e7565b50506001821b6101ed565b5060208310610133831016604e8410600b84101617156105bb575081810a6101ed565b6105c583836104fd565b80600019048211156105d9576105d96104e7565b029392505050565b60006103078383610540565b634e487b7160e01b600052601260045260246000fd5b60008261062057634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156101ed576101ed6104e7565b80820281158282048414176101ed576101ed6104e7565b600081810b9083900b01607f8113607f19821217156101ed576101ed6104e7565b60008260000b8260000b028060000b9150808214610690576106906104e7565b5092915050565b600061030760ff84168361054056fea26469706673582212208105e68fb7bfb10fa005b07efb45a75a332008143b2ec901a8c1ff740fc109e264736f6c63430008130033",
  "deployedSourceMap": "2004:1551:47:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2191:63;;;:::i;:::-;;;160:25:67;;;148:2;133:18;2191:63:47;;;;;;;;2156:29;;2183:2;2156:29;;;;;282:4:67;354:21;;;;336:40;;324:2;309:18;2156:29:47;196:186:67;2393:83:47;2183:2;2393:83;;3059:494;;;;;;:::i;:::-;;:::i;2482:132::-;;;;;;:::i;:::-;;:::i;2923:130::-;;;;;;:::i;:::-;;:::i;2620:297::-;;;;;;:::i;:::-;;:::i;2260:56::-;;;:::i;2327:59::-;;2371:15;2327:59;;;;;;;;;:::i;2191:63::-;2228:26;2183:2;2228;:26;:::i;:::-;2191:63;:::o;3059:494::-;3146:7;3184:15;3172:8;:27;;;;;;;;:::i;:::-;;3169:378;;3222:82;2315:1;2228:26;2183:2;2228;:26;:::i;:::-;2302:14;;;;:::i;:::-;3234:34;;3248:1;3234:34;:::i;:::-;3270:1;2228:26;2183:2;2228;:26;:::i;:::-;3285:18;3222:11;:82::i;:::-;3215:89;;;;3169:378;3336:13;3324:8;:25;;;;;;;;:::i;:::-;;3321:226;;3372:64;3398:1;3402;2228:26;2183:2;2228;:26;:::i;3321:226::-;3474:62;3500:1;3504;2228:26;2183:2;2228;:26;:::i;:::-;3519:16;3474:11;:62::i;3321:226::-;3059:494;;;;:::o;2482:132::-;2551:6;2228:26;2183:2;2228;:26;:::i;:::-;2592:14;;:1;:14;:::i;2923:130::-;2991:7;3021:25;3026:1;2371:15;3021:4;:25::i;2620:297::-;2699:6;;2729:9;2735:3;2183:2;2729:9;:::i;:::-;:14;;;;2721:58;;;;-1:-1:-1;;;2721:58:47;;4735:2:67;2721:58:47;;;4717:21:67;4774:2;4754:18;;;4747:30;4813:33;4793:18;;;4786:61;4864:18;;2721:58:47;;;;;;;;;2810:7;2183:2;2810:1;:7;:::i;:::-;2797:20;;:9;2803:3;2183:2;2797:9;:::i;:::-;:20;;;;2789:64;;;;-1:-1:-1;;;2789:64:47;;5336:2:67;2789:64:47;;;5318:21:67;5375:2;5355:18;;;5348:30;5414:33;5394:18;;;5387:61;5465:18;;2789:64:47;5134:355:67;2789:64:47;2899:9;2905:3;2183:2;2899:9;:::i;:::-;2887:22;;:2;:22;:::i;:::-;2883:26;;:1;:26;:::i;:::-;2864:46;2620:297;-1:-1:-1;;;2620:297:47:o;2260:56::-;2315:1;2228:26;2183:2;2228;:26;:::i;:::-;2302:14;;;;:::i;5724:337:30:-;5863:7;5882:14;5899:25;5906:1;5909;5912:11;5899:6;:25::i;:::-;5882:42;-1:-1:-1;5950:11:30;5938:8;:23;;;;;;;;:::i;:::-;;:56;;;;;5993:1;5978:11;5965:25;;;;;:::i;:::-;5975:1;5972;5965:25;:29;5938:56;5934:98;;;6010:11;6020:1;6010:11;;:::i;:::-;;;5934:98;6048:6;5724:337;-1:-1:-1;;;;;5724:337:30:o;1667:3925::-;1779:14;;;-1:-1:-1;;2316:1:30;2313;2306:20;2359:1;2356;2352:9;2343:18;;2414:5;2410:2;2407:13;2399:5;2395:2;2391:14;2387:34;2378:43;;;2516:5;2525:1;2516:10;2512:75;;2561:11;2553:5;:19;;;;;:::i;:::-;;2546:26;;;;;;2512:75;2711:5;2697:11;:19;2689:28;;;;;;2973:17;3108:11;3105:1;3102;3095:25;4486:1;4467;3656;3641:12;;:16;;3626:32;;3761:22;;;;4467:15;;;4466:21;;4719;;;4715:25;;4704:36;4788:21;;;4784:25;;4773:36;4858:21;;;4854:25;;4843:36;4928:21;;;4924:25;;4913:36;4998:21;;;4994:25;;4983:36;5069:21;;;5065:25;;;5054:36;3611:12;4006;;;4002:23;;;3998:31;;;3222:20;;;3211:32;;;4118:12;;;;3269:21;;3859:16;;;;4109:21;;;;5533:15;;1667:3925;-1:-1:-1;;;;1667:3925:30:o;387:364:67:-;495:6;503;556:2;544:9;535:7;531:23;527:32;524:52;;;572:1;569;562:12;524:52;608:9;595:23;585:33;;668:2;657:9;653:18;640:32;701:1;694:5;691:12;681:40;;717:1;714;707:12;681:40;740:5;730:15;;;387:364;;;;;:::o;756:180::-;815:6;868:2;856:9;847:7;843:23;839:32;836:52;;;884:1;881;874:12;836:52;-1:-1:-1;907:23:67;;756:180;-1:-1:-1;756:180:67:o;1362:340::-;1427:6;1435;1488:2;1476:9;1467:7;1463:23;1459:32;1456:52;;;1504:1;1501;1494:12;1456:52;1540:9;1527:23;1517:33;;1600:2;1589:9;1585:18;1572:32;1647:5;1644:1;1633:20;1626:5;1623:31;1613:59;;1668:1;1665;1658:12;1707:127;1768:10;1763:3;1759:20;1756:1;1749:31;1799:4;1796:1;1789:15;1823:4;1820:1;1813:15;1839:341;1984:2;1969:18;;2017:1;2006:13;;1996:144;;2062:10;2057:3;2053:20;2050:1;2043:31;2097:4;2094:1;2087:15;2125:4;2122:1;2115:15;1996:144;2149:25;;;1839:341;:::o;2185:127::-;2246:10;2241:3;2237:20;2234:1;2227:31;2277:4;2274:1;2267:15;2301:4;2298:1;2291:15;2317:422;2406:1;2449:5;2406:1;2463:270;2484:7;2474:8;2471:21;2463:270;;;2543:4;2539:1;2535:6;2531:17;2525:4;2522:27;2519:53;;;2552:18;;:::i;:::-;2602:7;2592:8;2588:22;2585:55;;;2622:16;;;;2585:55;2701:22;;;;2661:15;;;;2463:270;;;2467:3;2317:422;;;;;:::o;2744:806::-;2793:5;2823:8;2813:80;;-1:-1:-1;2864:1:67;2878:5;;2813:80;2912:4;2902:76;;-1:-1:-1;2949:1:67;2963:5;;2902:76;2994:4;3012:1;3007:59;;;;3080:1;3075:130;;;;2987:218;;3007:59;3037:1;3028:10;;3051:5;;;3075:130;3112:3;3102:8;3099:17;3096:43;;;3119:18;;:::i;:::-;-1:-1:-1;;3175:1:67;3161:16;;3190:5;;2987:218;;3289:2;3279:8;3276:16;3270:3;3264:4;3261:13;3257:36;3251:2;3241:8;3238:16;3233:2;3227:4;3224:12;3220:35;3217:77;3214:159;;;-1:-1:-1;3326:19:67;;;3358:5;;3214:159;3405:34;3430:8;3424:4;3405:34;:::i;:::-;3475:6;3471:1;3467:6;3463:19;3454:7;3451:32;3448:58;;;3486:18;;:::i;:::-;3524:20;;2744:806;-1:-1:-1;;;2744:806:67:o;3555:131::-;3615:5;3644:36;3671:8;3665:4;3644:36;:::i;3691:127::-;3752:10;3747:3;3743:20;3740:1;3733:31;3783:4;3780:1;3773:15;3807:4;3804:1;3797:15;3823:217;3863:1;3889;3879:132;;3933:10;3928:3;3924:20;3921:1;3914:31;3968:4;3965:1;3958:15;3996:4;3993:1;3986:15;3879:132;-1:-1:-1;4025:9:67;;3823:217::o;4045:125::-;4110:9;;;4131:10;;;4128:36;;;4144:18;;:::i;4175:168::-;4248:9;;;4279;;4296:15;;;4290:22;;4276:37;4266:71;;4317:18;;:::i;4348:180::-;4385:3;4414:16;;;4432;;;;4410:39;4493:3;4464:14;;-1:-1:-1;;4480:18:67;;4461:38;4458:64;;;4502:18;;:::i;4893:236::-;4930:7;5007:1;5004;4993:16;4989:1;4986;4975:16;4971:39;5044:11;5041:1;5030:26;5019:37;;5087:11;5078:7;5075:24;5065:58;;5103:18;;:::i;:::-;5065:58;4893:236;;;;:::o;5494:140::-;5552:5;5581:47;5622:4;5612:8;5608:19;5602:4;5581:47;:::i",
  "language": "Solidity",
  "natspec": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "offset": [
    2004,
    3555
  ],
  "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92AE8CE0 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x92AE8CE0 EQ PUSH2 0xE8 JUMPI DUP1 PUSH4 0xD05B0452 EQ PUSH2 0xFB JUMPI DUP1 PUSH4 0xDD45DAA1 EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0xEB646D71 EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0xF30ED598 EQ PUSH2 0x129 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x59F8B16 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x1A12CD47 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x8F24F601 EQ PUSH2 0xD5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x13E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xBB PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAA JUMP JUMPDEST PUSH1 0x12 PUSH2 0xA0 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0xE3 CALLDATASIZE PUSH1 0x4 PUSH2 0x431 JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH2 0xA0 PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x465 JUMP JUMPDEST PUSH2 0x1F3 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x109 CALLDATASIZE PUSH1 0x4 PUSH2 0x465 JUMP JUMPDEST PUSH2 0x20B JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x11C CALLDATASIZE PUSH1 0x4 PUSH2 0x47E JUMP JUMPDEST PUSH2 0x218 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x30E JUMP JUMPDEST PUSH2 0x131 PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x4BF JUMP JUMPDEST PUSH2 0x14A PUSH1 0x12 PUSH1 0xA PUSH2 0x5E1 JUMP JUMPDEST DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x163 JUMPI PUSH2 0x163 PUSH2 0x4A9 JUMP JUMPDEST SUB PUSH2 0x1A9 JUMPI PUSH2 0x1A2 PUSH1 0x2 PUSH2 0x179 PUSH1 0x12 PUSH1 0xA PUSH2 0x5E1 JUMP JUMPDEST PUSH2 0x183 SWAP2 SWAP1 PUSH2 0x603 JUMP JUMPDEST PUSH2 0x18D SWAP1 DUP6 PUSH2 0x625 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x19B PUSH1 0x12 PUSH1 0xA PUSH2 0x5E1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x326 JUMP JUMPDEST SWAP1 POP PUSH2 0x1ED JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1BD JUMPI PUSH2 0x1BD PUSH2 0x4A9 JUMP JUMPDEST SUB PUSH2 0x1D4 JUMPI PUSH2 0x1A2 DUP4 PUSH1 0x1 PUSH2 0x19B PUSH1 0x12 PUSH1 0xA PUSH2 0x5E1 JUMP JUMPDEST PUSH2 0x1A2 DUP4 PUSH1 0x1 PUSH2 0x1E6 PUSH1 0x12 PUSH1 0xA PUSH2 0x5E1 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x326 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x201 PUSH1 0x12 PUSH1 0xA PUSH2 0x5E1 JUMP JUMPDEST PUSH2 0x1ED SWAP1 DUP4 PUSH2 0x638 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ED DUP3 PUSH1 0x2 PUSH2 0x14D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x226 DUP4 PUSH1 0x12 PUSH2 0x64F JUMP JUMPDEST PUSH1 0x0 SIGNEXTEND SLT ISZERO PUSH2 0x27C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552524F523A464D2D3031303A4558504F4E454E545F544F4F5F534D414C4C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x288 PUSH1 0x12 PUSH1 0x2 PUSH2 0x670 JUMP JUMPDEST PUSH1 0x0 SIGNEXTEND PUSH2 0x296 DUP4 PUSH1 0x12 PUSH2 0x64F JUMP JUMPDEST PUSH1 0x0 SIGNEXTEND SGT ISZERO PUSH2 0x2E7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552524F523A464D2D3031313A4558504F4E454E545F544F4F5F4C4152474500 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x273 JUMP JUMPDEST PUSH2 0x2F2 DUP3 PUSH1 0x12 PUSH2 0x64F JUMP JUMPDEST PUSH2 0x2FD SWAP1 PUSH1 0xA PUSH2 0x697 JUMP JUMPDEST PUSH2 0x307 SWAP1 DUP5 PUSH2 0x638 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH2 0x31C PUSH1 0x12 PUSH1 0xA PUSH2 0x5E1 JUMP JUMPDEST PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x603 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x334 DUP7 DUP7 DUP7 PUSH2 0x383 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x34A JUMPI PUSH2 0x34A PUSH2 0x4A9 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x367 JUMPI POP PUSH1 0x0 DUP5 DUP1 PUSH2 0x362 JUMPI PUSH2 0x362 PUSH2 0x5ED JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO PUSH2 0x37A JUMPI PUSH2 0x377 PUSH1 0x1 DUP3 PUSH2 0x625 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP6 DUP8 MUL SWAP3 POP DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH1 0x0 SUB PUSH2 0x3BD JUMPI DUP4 DUP3 DUP2 PUSH2 0x3B3 JUMPI PUSH2 0x3B3 PUSH2 0x5ED JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x307 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x2 PUSH1 0x3 PUSH1 0x1 DUP9 NOT DUP2 ADD DUP10 AND SWAP9 DUP10 SWAP1 DIV SWAP2 DUP3 MUL DUP4 XOR DUP1 DUP4 MUL DUP5 SUB MUL DUP1 DUP4 MUL DUP5 SUB MUL DUP1 DUP4 MUL DUP5 SUB MUL DUP1 DUP4 MUL DUP5 SUB MUL DUP1 DUP4 MUL DUP5 SUB MUL SWAP2 DUP3 MUL SWAP1 SWAP3 SUB MUL PUSH1 0x0 DUP9 SWAP1 SUB DUP9 SWAP1 DIV SWAP1 SWAP2 ADD DUP6 DUP4 GT SWAP1 SWAP5 SUB SWAP4 SWAP1 SWAP4 MUL SWAP4 SUB SWAP5 SWAP1 SWAP5 DIV SWAP2 SWAP1 SWAP2 OR MUL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x45A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 PUSH1 0x0 SIGNEXTEND DUP2 EQ PUSH2 0x45A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x4E1 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x538 JUMPI DUP2 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH2 0x51E JUMPI PUSH2 0x51E PUSH2 0x4E7 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x52B JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x502 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x54F JUMPI POP PUSH1 0x1 PUSH2 0x1ED JUMP JUMPDEST DUP2 PUSH2 0x55C JUMPI POP PUSH1 0x0 PUSH2 0x1ED JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x572 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x57C JUMPI PUSH2 0x598 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x1ED JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x58D JUMPI PUSH2 0x58D PUSH2 0x4E7 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x1ED JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x5BB JUMPI POP DUP2 DUP2 EXP PUSH2 0x1ED JUMP JUMPDEST PUSH2 0x5C5 DUP4 DUP4 PUSH2 0x4FD JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH2 0x5D9 JUMPI PUSH2 0x5D9 PUSH2 0x4E7 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x307 DUP4 DUP4 PUSH2 0x540 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x620 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x1ED JUMPI PUSH2 0x1ED PUSH2 0x4E7 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x1ED JUMPI PUSH2 0x1ED PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND ADD PUSH1 0x7F DUP2 SGT PUSH1 0x7F NOT DUP3 SLT OR ISZERO PUSH2 0x1ED JUMPI PUSH2 0x1ED PUSH2 0x4E7 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 SIGNEXTEND DUP3 PUSH1 0x0 SIGNEXTEND MUL DUP1 PUSH1 0x0 SIGNEXTEND SWAP2 POP DUP1 DUP3 EQ PUSH2 0x690 JUMPI PUSH2 0x690 PUSH2 0x4E7 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x307 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x540 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP2 SDIV 0xE6 DUP16 0xB7 0xBF 0xB1 0xF LOG0 SDIV 0xB0 PUSH31 0xFB45A75A332008143B2EC901A8C1FF740FC109E264736F6C63430008130033 ",
  "pcMap": {
    "0": {
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x80"
    },
    "2": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x40"
    },
    "4": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "MSTORE",
      "path": "47"
    },
    "5": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "CALLVALUE",
      "path": "47"
    },
    "6": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "DUP1",
      "path": "47"
    },
    "7": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "ISZERO",
      "path": "47"
    },
    "8": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x10"
    },
    "11": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "12": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x0"
    },
    "14": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "DUP1",
      "path": "47"
    },
    "15": {
      "dev": "Cannot send ether to nonpayable function",
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "REVERT",
      "path": "47"
    },
    "16": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "17": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "POP",
      "path": "47"
    },
    "18": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x4"
    },
    "20": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "CALLDATASIZE",
      "path": "47"
    },
    "21": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "LT",
      "path": "47"
    },
    "22": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x93"
    },
    "25": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "26": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x0"
    },
    "28": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "CALLDATALOAD",
      "path": "47"
    },
    "29": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0xE0"
    },
    "31": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "SHR",
      "path": "47"
    },
    "32": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "DUP1",
      "path": "47"
    },
    "33": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH4",
      "path": "47",
      "value": "0x92AE8CE0"
    },
    "38": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "GT",
      "path": "47"
    },
    "39": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x66"
    },
    "42": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "43": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "DUP1",
      "path": "47"
    },
    "44": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH4",
      "path": "47",
      "value": "0x92AE8CE0"
    },
    "49": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "EQ",
      "path": "47"
    },
    "50": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xE8"
    },
    "53": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "54": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "DUP1",
      "path": "47"
    },
    "55": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH4",
      "path": "47",
      "value": "0xD05B0452"
    },
    "60": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "EQ",
      "path": "47"
    },
    "61": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xFB"
    },
    "64": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "65": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "DUP1",
      "path": "47"
    },
    "66": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH4",
      "path": "47",
      "value": "0xDD45DAA1"
    },
    "71": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "EQ",
      "path": "47"
    },
    "72": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x10E"
    },
    "75": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "76": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "DUP1",
      "path": "47"
    },
    "77": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH4",
      "path": "47",
      "value": "0xEB646D71"
    },
    "82": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "EQ",
      "path": "47"
    },
    "83": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x121"
    },
    "86": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "87": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "DUP1",
      "path": "47"
    },
    "88": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH4",
      "path": "47",
      "value": "0xF30ED598"
    },
    "93": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "EQ",
      "path": "47"
    },
    "94": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x129"
    },
    "97": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "98": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x0"
    },
    "100": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "DUP1",
      "path": "47"
    },
    "101": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "REVERT",
      "path": "47"
    },
    "102": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "103": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "DUP1",
      "path": "47"
    },
    "104": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH4",
      "path": "47",
      "value": "0x59F8B16"
    },
    "109": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "EQ",
      "path": "47"
    },
    "110": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x98"
    },
    "113": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "114": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "DUP1",
      "path": "47"
    },
    "115": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH4",
      "path": "47",
      "value": "0x1A12CD47"
    },
    "120": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "EQ",
      "path": "47"
    },
    "121": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xB3"
    },
    "124": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "125": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "DUP1",
      "path": "47"
    },
    "126": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH4",
      "path": "47",
      "value": "0x313CE567"
    },
    "131": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "EQ",
      "path": "47"
    },
    "132": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xCE"
    },
    "135": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "136": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "DUP1",
      "path": "47"
    },
    "137": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH4",
      "path": "47",
      "value": "0x8F24F601"
    },
    "142": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "EQ",
      "path": "47"
    },
    "143": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xD5"
    },
    "146": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "147": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "148": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x0"
    },
    "150": {
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "DUP1",
      "path": "47"
    },
    "151": {
      "first_revert": true,
      "fn": null,
      "offset": [
        2004,
        3555
      ],
      "op": "REVERT",
      "path": "47"
    },
    "152": {
      "offset": [
        2191,
        2254
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "153": {
      "fn": null,
      "offset": [
        2191,
        2254
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xA0"
    },
    "156": {
      "fn": null,
      "offset": [
        2191,
        2254
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x13E"
    },
    "159": {
      "fn": null,
      "jump": "i",
      "offset": [
        2191,
        2254
      ],
      "op": "JUMP",
      "path": "47"
    },
    "160": {
      "fn": null,
      "offset": [
        2191,
        2254
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "161": {
      "fn": null,
      "offset": [
        2191,
        2254
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x40"
    },
    "163": {
      "fn": null,
      "offset": [
        2191,
        2254
      ],
      "op": "MLOAD",
      "path": "47"
    },
    "164": {
      "op": "SWAP1"
    },
    "165": {
      "op": "DUP2"
    },
    "166": {
      "op": "MSTORE"
    },
    "167": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "169": {
      "op": "ADD"
    },
    "170": {
      "offset": [
        2191,
        2254
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "171": {
      "fn": null,
      "offset": [
        2191,
        2254
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x40"
    },
    "173": {
      "fn": null,
      "offset": [
        2191,
        2254
      ],
      "op": "MLOAD",
      "path": "47"
    },
    "174": {
      "fn": null,
      "offset": [
        2191,
        2254
      ],
      "op": "DUP1",
      "path": "47"
    },
    "175": {
      "fn": null,
      "offset": [
        2191,
        2254
      ],
      "op": "SWAP2",
      "path": "47"
    },
    "176": {
      "fn": null,
      "offset": [
        2191,
        2254
      ],
      "op": "SUB",
      "path": "47"
    },
    "177": {
      "fn": null,
      "offset": [
        2191,
        2254
      ],
      "op": "SWAP1",
      "path": "47"
    },
    "178": {
      "fn": null,
      "offset": [
        2191,
        2254
      ],
      "op": "RETURN",
      "path": "47"
    },
    "179": {
      "offset": [
        2156,
        2185
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "180": {
      "fn": null,
      "offset": [
        2156,
        2185
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xBB"
    },
    "183": {
      "offset": [
        2183,
        2185
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x12"
    },
    "185": {
      "offset": [
        2156,
        2185
      ],
      "op": "DUP2",
      "path": "47"
    },
    "186": {
      "fn": null,
      "offset": [
        2156,
        2185
      ],
      "op": "JUMP",
      "path": "47"
    },
    "187": {
      "fn": null,
      "offset": [
        2156,
        2185
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "188": {
      "fn": null,
      "offset": [
        2156,
        2185
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x40"
    },
    "190": {
      "fn": null,
      "offset": [
        2156,
        2185
      ],
      "op": "MLOAD",
      "path": "47"
    },
    "191": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "193": {
      "op": "SWAP2"
    },
    "194": {
      "op": "SWAP1"
    },
    "195": {
      "op": "SWAP2"
    },
    "196": {
      "op": "SIGNEXTEND"
    },
    "197": {
      "op": "DUP2"
    },
    "198": {
      "op": "MSTORE"
    },
    "199": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "201": {
      "op": "ADD"
    },
    "202": {
      "offset": [
        2156,
        2185
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xAA"
    },
    "205": {
      "op": "JUMP"
    },
    "206": {
      "fn": "UFixedType.decimals",
      "offset": [
        2393,
        2476
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "207": {
      "offset": [
        2183,
        2185
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x12"
    },
    "209": {
      "fn": "UFixedType.decimals",
      "offset": [
        2393,
        2476
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xA0"
    },
    "212": {
      "fn": "UFixedType.decimals",
      "offset": [
        2393,
        2476
      ],
      "op": "JUMP",
      "path": "47"
    },
    "213": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3059,
        3553
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "214": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3059,
        3553
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xA0"
    },
    "217": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3059,
        3553
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xE3"
    },
    "220": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3059,
        3553
      ],
      "op": "CALLDATASIZE",
      "path": "47"
    },
    "221": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3059,
        3553
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x4"
    },
    "223": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3059,
        3553
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x431"
    },
    "226": {
      "fn": "UFixedType.ftoi",
      "jump": "i",
      "offset": [
        3059,
        3553
      ],
      "op": "JUMP",
      "path": "47"
    },
    "227": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3059,
        3553
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "228": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3059,
        3553
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x14D"
    },
    "231": {
      "fn": "UFixedType.ftoi",
      "jump": "i",
      "offset": [
        3059,
        3553
      ],
      "op": "JUMP",
      "path": "47"
    },
    "232": {
      "fn": "UFixedType.itof",
      "offset": [
        2482,
        2614
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "233": {
      "fn": "UFixedType.itof",
      "offset": [
        2482,
        2614
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xA0"
    },
    "236": {
      "fn": "UFixedType.itof",
      "offset": [
        2482,
        2614
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xF6"
    },
    "239": {
      "fn": "UFixedType.itof",
      "offset": [
        2482,
        2614
      ],
      "op": "CALLDATASIZE",
      "path": "47"
    },
    "240": {
      "fn": "UFixedType.itof",
      "offset": [
        2482,
        2614
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x4"
    },
    "242": {
      "fn": "UFixedType.itof",
      "offset": [
        2482,
        2614
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x465"
    },
    "245": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2482,
        2614
      ],
      "op": "JUMP",
      "path": "47"
    },
    "246": {
      "fn": "UFixedType.itof",
      "offset": [
        2482,
        2614
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "247": {
      "fn": "UFixedType.itof",
      "offset": [
        2482,
        2614
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x1F3"
    },
    "250": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2482,
        2614
      ],
      "op": "JUMP",
      "path": "47"
    },
    "251": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2923,
        3053
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "252": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2923,
        3053
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xA0"
    },
    "255": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2923,
        3053
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x109"
    },
    "258": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2923,
        3053
      ],
      "op": "CALLDATASIZE",
      "path": "47"
    },
    "259": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2923,
        3053
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x4"
    },
    "261": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2923,
        3053
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x465"
    },
    "264": {
      "fn": "UFixedType.ftoi",
      "jump": "i",
      "offset": [
        2923,
        3053
      ],
      "op": "JUMP",
      "path": "47"
    },
    "265": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2923,
        3053
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "266": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2923,
        3053
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x20B"
    },
    "269": {
      "fn": "UFixedType.ftoi",
      "jump": "i",
      "offset": [
        2923,
        3053
      ],
      "op": "JUMP",
      "path": "47"
    },
    "270": {
      "fn": "UFixedType.itof",
      "offset": [
        2620,
        2917
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "271": {
      "fn": "UFixedType.itof",
      "offset": [
        2620,
        2917
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xA0"
    },
    "274": {
      "fn": "UFixedType.itof",
      "offset": [
        2620,
        2917
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x11C"
    },
    "277": {
      "fn": "UFixedType.itof",
      "offset": [
        2620,
        2917
      ],
      "op": "CALLDATASIZE",
      "path": "47"
    },
    "278": {
      "fn": "UFixedType.itof",
      "offset": [
        2620,
        2917
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x4"
    },
    "280": {
      "fn": "UFixedType.itof",
      "offset": [
        2620,
        2917
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x47E"
    },
    "283": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2620,
        2917
      ],
      "op": "JUMP",
      "path": "47"
    },
    "284": {
      "fn": "UFixedType.itof",
      "offset": [
        2620,
        2917
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "285": {
      "fn": "UFixedType.itof",
      "offset": [
        2620,
        2917
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x218"
    },
    "288": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2620,
        2917
      ],
      "op": "JUMP",
      "path": "47"
    },
    "289": {
      "offset": [
        2260,
        2316
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "290": {
      "fn": "UFixedType.itof",
      "offset": [
        2260,
        2316
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xA0"
    },
    "293": {
      "fn": "UFixedType.itof",
      "offset": [
        2260,
        2316
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x30E"
    },
    "296": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2260,
        2316
      ],
      "op": "JUMP",
      "path": "47"
    },
    "297": {
      "offset": [
        2327,
        2386
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "298": {
      "fn": "UFixedType.itof",
      "offset": [
        2327,
        2386
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x131"
    },
    "301": {
      "offset": [
        2371,
        2386
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x2"
    },
    "303": {
      "offset": [
        2327,
        2386
      ],
      "op": "DUP2",
      "path": "47"
    },
    "304": {
      "fn": "UFixedType.itof",
      "offset": [
        2327,
        2386
      ],
      "op": "JUMP",
      "path": "47"
    },
    "305": {
      "fn": "UFixedType.itof",
      "offset": [
        2327,
        2386
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "306": {
      "fn": "UFixedType.itof",
      "offset": [
        2327,
        2386
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x40"
    },
    "308": {
      "fn": "UFixedType.itof",
      "offset": [
        2327,
        2386
      ],
      "op": "MLOAD",
      "path": "47"
    },
    "309": {
      "fn": "UFixedType.itof",
      "offset": [
        2327,
        2386
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0xAA"
    },
    "312": {
      "fn": "UFixedType.itof",
      "offset": [
        2327,
        2386
      ],
      "op": "SWAP2",
      "path": "47"
    },
    "313": {
      "fn": "UFixedType.itof",
      "offset": [
        2327,
        2386
      ],
      "op": "SWAP1",
      "path": "47"
    },
    "314": {
      "fn": "UFixedType.itof",
      "offset": [
        2327,
        2386
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x4BF"
    },
    "317": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2327,
        2386
      ],
      "op": "JUMP",
      "path": "47"
    },
    "318": {
      "offset": [
        2191,
        2254
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "319": {
      "offset": [
        2228,
        2254
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x14A"
    },
    "322": {
      "offset": [
        2183,
        2185
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x12"
    },
    "324": {
      "offset": [
        2228,
        2230
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0xA"
    },
    "326": {
      "offset": [
        2228,
        2254
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x5E1"
    },
    "329": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2228,
        2254
      ],
      "op": "JUMP",
      "path": "47"
    },
    "330": {
      "fn": "UFixedType.itof",
      "offset": [
        2228,
        2254
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "331": {
      "offset": [
        2191,
        2254
      ],
      "op": "DUP2",
      "path": "47"
    },
    "332": {
      "fn": "UFixedType.itof",
      "jump": "o",
      "offset": [
        2191,
        2254
      ],
      "op": "JUMP",
      "path": "47"
    },
    "333": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3059,
        3553
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "334": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3146,
        3153
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x0"
    },
    "336": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3184,
        3199
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x2"
    },
    "338": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3172,
        3180
      ],
      "op": "DUP3",
      "path": "47"
    },
    "339": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3172,
        3199
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x2"
    },
    "341": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3172,
        3199
      ],
      "op": "DUP2",
      "path": "47"
    },
    "342": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3172,
        3199
      ],
      "op": "GT",
      "path": "47"
    },
    "343": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3172,
        3199
      ],
      "op": "ISZERO",
      "path": "47"
    },
    "344": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3172,
        3199
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x163"
    },
    "347": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3172,
        3199
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "348": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3172,
        3199
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x163"
    },
    "351": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3172,
        3199
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x4A9"
    },
    "354": {
      "fn": "UFixedType.ftoi",
      "jump": "i",
      "offset": [
        3172,
        3199
      ],
      "op": "JUMP",
      "path": "47"
    },
    "355": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3172,
        3199
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "356": {
      "branch": 20,
      "fn": "UFixedType.ftoi",
      "offset": [
        3172,
        3199
      ],
      "op": "SUB",
      "path": "47"
    },
    "357": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3169,
        3547
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x1A9"
    },
    "360": {
      "branch": 20,
      "fn": "UFixedType.ftoi",
      "offset": [
        3169,
        3547
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "361": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3222,
        3304
      ],
      "op": "PUSH2",
      "path": "47",
      "statement": 0,
      "value": "0x1A2"
    },
    "364": {
      "offset": [
        2315,
        2316
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x2"
    },
    "366": {
      "offset": [
        2228,
        2254
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x179"
    },
    "369": {
      "offset": [
        2183,
        2185
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x12"
    },
    "371": {
      "offset": [
        2228,
        2230
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0xA"
    },
    "373": {
      "offset": [
        2228,
        2254
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x5E1"
    },
    "376": {
      "fn": "UFixedType.ftoi",
      "jump": "i",
      "offset": [
        2228,
        2254
      ],
      "op": "JUMP",
      "path": "47"
    },
    "377": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2228,
        2254
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "378": {
      "offset": [
        2302,
        2316
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x183"
    },
    "381": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2302,
        2316
      ],
      "op": "SWAP2",
      "path": "47"
    },
    "382": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2302,
        2316
      ],
      "op": "SWAP1",
      "path": "47"
    },
    "383": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2302,
        2316
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x603"
    },
    "386": {
      "fn": "UFixedType.ftoi",
      "jump": "i",
      "offset": [
        2302,
        2316
      ],
      "op": "JUMP",
      "path": "47"
    },
    "387": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2302,
        2316
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "388": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3234,
        3268
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x18D"
    },
    "391": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3234,
        3268
      ],
      "op": "SWAP1",
      "path": "47"
    },
    "392": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3248,
        3249
      ],
      "op": "DUP6",
      "path": "47"
    },
    "393": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3234,
        3268
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x625"
    },
    "396": {
      "fn": "UFixedType.ftoi",
      "jump": "i",
      "offset": [
        3234,
        3268
      ],
      "op": "JUMP",
      "path": "47"
    },
    "397": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3234,
        3268
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "398": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3270,
        3271
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x1"
    },
    "400": {
      "offset": [
        2228,
        2254
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x19B"
    },
    "403": {
      "offset": [
        2183,
        2185
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x12"
    },
    "405": {
      "offset": [
        2228,
        2230
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0xA"
    },
    "407": {
      "offset": [
        2228,
        2254
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x5E1"
    },
    "410": {
      "fn": "UFixedType.ftoi",
      "jump": "i",
      "offset": [
        2228,
        2254
      ],
      "op": "JUMP",
      "path": "47"
    },
    "411": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2228,
        2254
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "412": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3285,
        3303
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x0"
    },
    "414": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3222,
        3233
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x326"
    },
    "417": {
      "fn": "UFixedType.ftoi",
      "jump": "i",
      "offset": [
        3222,
        3304
      ],
      "op": "JUMP",
      "path": "47"
    },
    "418": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3222,
        3304
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "419": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3215,
        3304
      ],
      "op": "SWAP1",
      "path": "47"
    },
    "420": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3215,
        3304
      ],
      "op": "POP",
      "path": "47"
    },
    "421": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3215,
        3304
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x1ED"
    },
    "424": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3215,
        3304
      ],
      "op": "JUMP",
      "path": "47"
    },
    "425": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3169,
        3547
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "426": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3336,
        3349
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x0"
    },
    "428": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3324,
        3332
      ],
      "op": "DUP3",
      "path": "47"
    },
    "429": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3324,
        3349
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x2"
    },
    "431": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3324,
        3349
      ],
      "op": "DUP2",
      "path": "47"
    },
    "432": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3324,
        3349
      ],
      "op": "GT",
      "path": "47"
    },
    "433": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3324,
        3349
      ],
      "op": "ISZERO",
      "path": "47"
    },
    "434": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3324,
        3349
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x1BD"
    },
    "437": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3324,
        3349
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "438": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3324,
        3349
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x1BD"
    },
    "441": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3324,
        3349
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x4A9"
    },
    "444": {
      "fn": "UFixedType.ftoi",
      "jump": "i",
      "offset": [
        3324,
        3349
      ],
      "op": "JUMP",
      "path": "47"
    },
    "445": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3324,
        3349
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "446": {
      "branch": 21,
      "fn": "UFixedType.ftoi",
      "offset": [
        3324,
        3349
      ],
      "op": "SUB",
      "path": "47"
    },
    "447": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3321,
        3547
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x1D4"
    },
    "450": {
      "branch": 21,
      "fn": "UFixedType.ftoi",
      "offset": [
        3321,
        3547
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "451": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3372,
        3436
      ],
      "op": "PUSH2",
      "path": "47",
      "statement": 1,
      "value": "0x1A2"
    },
    "454": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3398,
        3399
      ],
      "op": "DUP4",
      "path": "47"
    },
    "455": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3402,
        3403
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x1"
    },
    "457": {
      "offset": [
        2228,
        2254
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x19B"
    },
    "460": {
      "offset": [
        2183,
        2185
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x12"
    },
    "462": {
      "offset": [
        2228,
        2230
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0xA"
    },
    "464": {
      "offset": [
        2228,
        2254
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x5E1"
    },
    "467": {
      "fn": "UFixedType.ftoi",
      "jump": "i",
      "offset": [
        2228,
        2254
      ],
      "op": "JUMP",
      "path": "47"
    },
    "468": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3321,
        3547
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "469": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3474,
        3536
      ],
      "op": "PUSH2",
      "path": "47",
      "statement": 2,
      "value": "0x1A2"
    },
    "472": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3500,
        3501
      ],
      "op": "DUP4",
      "path": "47"
    },
    "473": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3504,
        3505
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x1"
    },
    "475": {
      "offset": [
        2228,
        2254
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x1E6"
    },
    "478": {
      "offset": [
        2183,
        2185
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x12"
    },
    "480": {
      "offset": [
        2228,
        2230
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0xA"
    },
    "482": {
      "offset": [
        2228,
        2254
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x5E1"
    },
    "485": {
      "fn": "UFixedType.ftoi",
      "jump": "i",
      "offset": [
        2228,
        2254
      ],
      "op": "JUMP",
      "path": "47"
    },
    "486": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2228,
        2254
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "487": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3519,
        3535
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x1"
    },
    "489": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3474,
        3485
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x326"
    },
    "492": {
      "fn": "UFixedType.ftoi",
      "jump": "i",
      "offset": [
        3474,
        3536
      ],
      "op": "JUMP",
      "path": "47"
    },
    "493": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3321,
        3547
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "494": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3059,
        3553
      ],
      "op": "SWAP3",
      "path": "47"
    },
    "495": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3059,
        3553
      ],
      "op": "SWAP2",
      "path": "47"
    },
    "496": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3059,
        3553
      ],
      "op": "POP",
      "path": "47"
    },
    "497": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3059,
        3553
      ],
      "op": "POP",
      "path": "47"
    },
    "498": {
      "fn": "UFixedType.ftoi",
      "jump": "o",
      "offset": [
        3059,
        3553
      ],
      "op": "JUMP",
      "path": "47"
    },
    "499": {
      "fn": "UFixedType.itof",
      "offset": [
        2482,
        2614
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "500": {
      "fn": "UFixedType.itof",
      "offset": [
        2551,
        2557
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x0"
    },
    "502": {
      "offset": [
        2228,
        2254
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x201"
    },
    "505": {
      "offset": [
        2183,
        2185
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x12"
    },
    "507": {
      "offset": [
        2228,
        2230
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0xA"
    },
    "509": {
      "offset": [
        2228,
        2254
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x5E1"
    },
    "512": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2228,
        2254
      ],
      "op": "JUMP",
      "path": "47"
    },
    "513": {
      "fn": "UFixedType.itof",
      "offset": [
        2228,
        2254
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "514": {
      "fn": "UFixedType.itof",
      "offset": [
        2592,
        2606
      ],
      "op": "PUSH2",
      "path": "47",
      "statement": 3,
      "value": "0x1ED"
    },
    "517": {
      "fn": "UFixedType.itof",
      "offset": [
        2592,
        2606
      ],
      "op": "SWAP1",
      "path": "47"
    },
    "518": {
      "fn": "UFixedType.itof",
      "offset": [
        2592,
        2593
      ],
      "op": "DUP4",
      "path": "47"
    },
    "519": {
      "fn": "UFixedType.itof",
      "offset": [
        2592,
        2606
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x638"
    },
    "522": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2592,
        2606
      ],
      "op": "JUMP",
      "path": "47"
    },
    "523": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2923,
        3053
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "524": {
      "fn": "UFixedType.ftoi",
      "offset": [
        2991,
        2998
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x0"
    },
    "526": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3021,
        3046
      ],
      "op": "PUSH2",
      "path": "47",
      "statement": 4,
      "value": "0x1ED"
    },
    "529": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3026,
        3027
      ],
      "op": "DUP3",
      "path": "47"
    },
    "530": {
      "offset": [
        2371,
        2386
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x2"
    },
    "532": {
      "fn": "UFixedType.ftoi",
      "offset": [
        3021,
        3025
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x14D"
    },
    "535": {
      "fn": "UFixedType.ftoi",
      "jump": "i",
      "offset": [
        3021,
        3046
      ],
      "op": "JUMP",
      "path": "47"
    },
    "536": {
      "fn": "UFixedType.itof",
      "offset": [
        2620,
        2917
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "537": {
      "fn": "UFixedType.itof",
      "offset": [
        2699,
        2705
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x0"
    },
    "539": {
      "fn": "UFixedType.itof",
      "offset": [
        2699,
        2705
      ],
      "op": "DUP1",
      "path": "47"
    },
    "540": {
      "fn": "UFixedType.itof",
      "offset": [
        2729,
        2738
      ],
      "op": "PUSH2",
      "path": "47",
      "statement": 5,
      "value": "0x226"
    },
    "543": {
      "fn": "UFixedType.itof",
      "offset": [
        2735,
        2738
      ],
      "op": "DUP4",
      "path": "47"
    },
    "544": {
      "offset": [
        2183,
        2185
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x12"
    },
    "546": {
      "fn": "UFixedType.itof",
      "offset": [
        2729,
        2738
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x64F"
    },
    "549": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2729,
        2738
      ],
      "op": "JUMP",
      "path": "47"
    },
    "550": {
      "fn": "UFixedType.itof",
      "offset": [
        2729,
        2738
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "551": {
      "fn": "UFixedType.itof",
      "offset": [
        2729,
        2743
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x0"
    },
    "553": {
      "fn": "UFixedType.itof",
      "offset": [
        2729,
        2743
      ],
      "op": "SIGNEXTEND",
      "path": "47"
    },
    "554": {
      "fn": "UFixedType.itof",
      "offset": [
        2729,
        2743
      ],
      "op": "SLT",
      "path": "47"
    },
    "555": {
      "branch": 22,
      "fn": "UFixedType.itof",
      "offset": [
        2729,
        2743
      ],
      "op": "ISZERO",
      "path": "47"
    },
    "556": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x27C"
    },
    "559": {
      "branch": 22,
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "560": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x40"
    },
    "562": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "MLOAD",
      "path": "47"
    },
    "563": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "567": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "569": {
      "op": "SHL"
    },
    "570": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "DUP2",
      "path": "47"
    },
    "571": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "MSTORE",
      "path": "47"
    },
    "572": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "574": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x4"
    },
    "576": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "DUP3",
      "path": "47"
    },
    "577": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "ADD",
      "path": "47"
    },
    "578": {
      "op": "MSTORE"
    },
    "579": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "581": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "583": {
      "op": "DUP3"
    },
    "584": {
      "op": "ADD"
    },
    "585": {
      "op": "MSTORE"
    },
    "586": {
      "op": "PUSH32",
      "value": "0x4552524F523A464D2D3031303A4558504F4E454E545F544F4F5F534D414C4C00"
    },
    "619": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "621": {
      "op": "DUP3"
    },
    "622": {
      "op": "ADD"
    },
    "623": {
      "op": "MSTORE"
    },
    "624": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "626": {
      "op": "ADD"
    },
    "627": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "628": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x40"
    },
    "630": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "MLOAD",
      "path": "47"
    },
    "631": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "DUP1",
      "path": "47"
    },
    "632": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "SWAP2",
      "path": "47"
    },
    "633": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "SUB",
      "path": "47"
    },
    "634": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "SWAP1",
      "path": "47"
    },
    "635": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "REVERT",
      "optimizer_revert": true,
      "path": "47"
    },
    "636": {
      "fn": "UFixedType.itof",
      "offset": [
        2721,
        2779
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "637": {
      "fn": "UFixedType.itof",
      "offset": [
        2810,
        2817
      ],
      "op": "PUSH2",
      "path": "47",
      "statement": 6,
      "value": "0x288"
    },
    "640": {
      "offset": [
        2183,
        2185
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x12"
    },
    "642": {
      "fn": "UFixedType.itof",
      "offset": [
        2810,
        2811
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x2"
    },
    "644": {
      "fn": "UFixedType.itof",
      "offset": [
        2810,
        2817
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x670"
    },
    "647": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2810,
        2817
      ],
      "op": "JUMP",
      "path": "47"
    },
    "648": {
      "fn": "UFixedType.itof",
      "offset": [
        2810,
        2817
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "649": {
      "fn": "UFixedType.itof",
      "offset": [
        2797,
        2817
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x0"
    },
    "651": {
      "fn": "UFixedType.itof",
      "offset": [
        2797,
        2817
      ],
      "op": "SIGNEXTEND",
      "path": "47"
    },
    "652": {
      "fn": "UFixedType.itof",
      "offset": [
        2797,
        2806
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x296"
    },
    "655": {
      "fn": "UFixedType.itof",
      "offset": [
        2803,
        2806
      ],
      "op": "DUP4",
      "path": "47"
    },
    "656": {
      "offset": [
        2183,
        2185
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x12"
    },
    "658": {
      "fn": "UFixedType.itof",
      "offset": [
        2797,
        2806
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x64F"
    },
    "661": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2797,
        2806
      ],
      "op": "JUMP",
      "path": "47"
    },
    "662": {
      "fn": "UFixedType.itof",
      "offset": [
        2797,
        2806
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "663": {
      "fn": "UFixedType.itof",
      "offset": [
        2797,
        2817
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x0"
    },
    "665": {
      "fn": "UFixedType.itof",
      "offset": [
        2797,
        2817
      ],
      "op": "SIGNEXTEND",
      "path": "47"
    },
    "666": {
      "fn": "UFixedType.itof",
      "offset": [
        2797,
        2817
      ],
      "op": "SGT",
      "path": "47"
    },
    "667": {
      "branch": 23,
      "fn": "UFixedType.itof",
      "offset": [
        2797,
        2817
      ],
      "op": "ISZERO",
      "path": "47"
    },
    "668": {
      "fn": "UFixedType.itof",
      "offset": [
        2789,
        2853
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x2E7"
    },
    "671": {
      "branch": 23,
      "fn": "UFixedType.itof",
      "offset": [
        2789,
        2853
      ],
      "op": "JUMPI",
      "path": "47"
    },
    "672": {
      "fn": "UFixedType.itof",
      "offset": [
        2789,
        2853
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x40"
    },
    "674": {
      "fn": "UFixedType.itof",
      "offset": [
        2789,
        2853
      ],
      "op": "MLOAD",
      "path": "47"
    },
    "675": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "679": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "681": {
      "op": "SHL"
    },
    "682": {
      "fn": "UFixedType.itof",
      "offset": [
        2789,
        2853
      ],
      "op": "DUP2",
      "path": "47"
    },
    "683": {
      "fn": "UFixedType.itof",
      "offset": [
        2789,
        2853
      ],
      "op": "MSTORE",
      "path": "47"
    },
    "684": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "686": {
      "fn": "UFixedType.itof",
      "offset": [
        2789,
        2853
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x4"
    },
    "688": {
      "fn": "UFixedType.itof",
      "offset": [
        2789,
        2853
      ],
      "op": "DUP3",
      "path": "47"
    },
    "689": {
      "fn": "UFixedType.itof",
      "offset": [
        2789,
        2853
      ],
      "op": "ADD",
      "path": "47"
    },
    "690": {
      "op": "MSTORE"
    },
    "691": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "693": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "695": {
      "op": "DUP3"
    },
    "696": {
      "op": "ADD"
    },
    "697": {
      "op": "MSTORE"
    },
    "698": {
      "op": "PUSH32",
      "value": "0x4552524F523A464D2D3031313A4558504F4E454E545F544F4F5F4C4152474500"
    },
    "731": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "733": {
      "op": "DUP3"
    },
    "734": {
      "op": "ADD"
    },
    "735": {
      "op": "MSTORE"
    },
    "736": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "738": {
      "op": "ADD"
    },
    "739": {
      "fn": "UFixedType.itof",
      "offset": [
        2789,
        2853
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x273"
    },
    "742": {
      "op": "JUMP"
    },
    "743": {
      "fn": "UFixedType.itof",
      "offset": [
        2789,
        2853
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "744": {
      "fn": "UFixedType.itof",
      "offset": [
        2899,
        2908
      ],
      "op": "PUSH2",
      "path": "47",
      "statement": 7,
      "value": "0x2F2"
    },
    "747": {
      "fn": "UFixedType.itof",
      "offset": [
        2905,
        2908
      ],
      "op": "DUP3",
      "path": "47"
    },
    "748": {
      "offset": [
        2183,
        2185
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x12"
    },
    "750": {
      "fn": "UFixedType.itof",
      "offset": [
        2899,
        2908
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x64F"
    },
    "753": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2899,
        2908
      ],
      "op": "JUMP",
      "path": "47"
    },
    "754": {
      "fn": "UFixedType.itof",
      "offset": [
        2899,
        2908
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "755": {
      "fn": "UFixedType.itof",
      "offset": [
        2887,
        2909
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x2FD"
    },
    "758": {
      "fn": "UFixedType.itof",
      "offset": [
        2887,
        2909
      ],
      "op": "SWAP1",
      "path": "47"
    },
    "759": {
      "fn": "UFixedType.itof",
      "offset": [
        2887,
        2889
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0xA"
    },
    "761": {
      "fn": "UFixedType.itof",
      "offset": [
        2887,
        2909
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x697"
    },
    "764": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2887,
        2909
      ],
      "op": "JUMP",
      "path": "47"
    },
    "765": {
      "fn": "UFixedType.itof",
      "offset": [
        2887,
        2909
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "766": {
      "fn": "UFixedType.itof",
      "offset": [
        2883,
        2909
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x307"
    },
    "769": {
      "fn": "UFixedType.itof",
      "offset": [
        2883,
        2909
      ],
      "op": "SWAP1",
      "path": "47"
    },
    "770": {
      "fn": "UFixedType.itof",
      "offset": [
        2883,
        2884
      ],
      "op": "DUP5",
      "path": "47"
    },
    "771": {
      "fn": "UFixedType.itof",
      "offset": [
        2883,
        2909
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x638"
    },
    "774": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2883,
        2909
      ],
      "op": "JUMP",
      "path": "47"
    },
    "775": {
      "fn": "UFixedType.itof",
      "offset": [
        2883,
        2909
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "776": {
      "fn": "UFixedType.itof",
      "offset": [
        2864,
        2910
      ],
      "op": "SWAP4",
      "path": "47"
    },
    "777": {
      "fn": "UFixedType.itof",
      "offset": [
        2620,
        2917
      ],
      "op": "SWAP3",
      "path": "47"
    },
    "778": {
      "op": "POP"
    },
    "779": {
      "op": "POP"
    },
    "780": {
      "op": "POP"
    },
    "781": {
      "fn": "UFixedType.itof",
      "jump": "o",
      "offset": [
        2620,
        2917
      ],
      "op": "JUMP",
      "path": "47"
    },
    "782": {
      "offset": [
        2260,
        2316
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "783": {
      "offset": [
        2315,
        2316
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x2"
    },
    "785": {
      "offset": [
        2228,
        2254
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x31C"
    },
    "788": {
      "offset": [
        2183,
        2185
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0x12"
    },
    "790": {
      "offset": [
        2228,
        2230
      ],
      "op": "PUSH1",
      "path": "47",
      "value": "0xA"
    },
    "792": {
      "offset": [
        2228,
        2254
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x5E1"
    },
    "795": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2228,
        2254
      ],
      "op": "JUMP",
      "path": "47"
    },
    "796": {
      "fn": "UFixedType.itof",
      "offset": [
        2228,
        2254
      ],
      "op": "JUMPDEST",
      "path": "47"
    },
    "797": {
      "offset": [
        2302,
        2316
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x14A"
    },
    "800": {
      "fn": "UFixedType.itof",
      "offset": [
        2302,
        2316
      ],
      "op": "SWAP2",
      "path": "47"
    },
    "801": {
      "fn": "UFixedType.itof",
      "offset": [
        2302,
        2316
      ],
      "op": "SWAP1",
      "path": "47"
    },
    "802": {
      "fn": "UFixedType.itof",
      "offset": [
        2302,
        2316
      ],
      "op": "PUSH2",
      "path": "47",
      "value": "0x603"
    },
    "805": {
      "fn": "UFixedType.itof",
      "jump": "i",
      "offset": [
        2302,
        2316
      ],
      "op": "JUMP",
      "path": "47"
    },
    "806": {
      "fn": "Math.mulDiv",
      "offset": [
        5724,
        6061
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "807": {
      "fn": "Math.mulDiv",
      "offset": [
        5863,
        5870
      ],
      "op": "PUSH1",
      "path": "30",
      "value": "0x0"
    },
    "809": {
      "fn": "Math.mulDiv",
      "offset": [
        5882,
        5896
      ],
      "op": "DUP1",
      "path": "30"
    },
    "810": {
      "fn": "Math.mulDiv",
      "offset": [
        5899,
        5924
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x334"
    },
    "813": {
      "fn": "Math.mulDiv",
      "offset": [
        5906,
        5907
      ],
      "op": "DUP7",
      "path": "30"
    },
    "814": {
      "fn": "Math.mulDiv",
      "offset": [
        5909,
        5910
      ],
      "op": "DUP7",
      "path": "30"
    },
    "815": {
      "fn": "Math.mulDiv",
      "offset": [
        5912,
        5923
      ],
      "op": "DUP7",
      "path": "30"
    },
    "816": {
      "fn": "Math.mulDiv",
      "offset": [
        5899,
        5905
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x383"
    },
    "819": {
      "fn": "Math.mulDiv",
      "jump": "i",
      "offset": [
        5899,
        5924
      ],
      "op": "JUMP",
      "path": "30"
    },
    "820": {
      "fn": "Math.mulDiv",
      "offset": [
        5899,
        5924
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "821": {
      "fn": "Math.mulDiv",
      "offset": [
        5882,
        5924
      ],
      "op": "SWAP1",
      "path": "30"
    },
    "822": {
      "op": "POP"
    },
    "823": {
      "fn": "Math.mulDiv",
      "offset": [
        5950,
        5961
      ],
      "op": "PUSH1",
      "path": "30",
      "value": "0x1"
    },
    "825": {
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5946
      ],
      "op": "DUP4",
      "path": "30"
    },
    "826": {
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5961
      ],
      "op": "PUSH1",
      "path": "30",
      "value": "0x2"
    },
    "828": {
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5961
      ],
      "op": "DUP2",
      "path": "30"
    },
    "829": {
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5961
      ],
      "op": "GT",
      "path": "30"
    },
    "830": {
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5961
      ],
      "op": "ISZERO",
      "path": "30"
    },
    "831": {
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5961
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x34A"
    },
    "834": {
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5961
      ],
      "op": "JUMPI",
      "path": "30"
    },
    "835": {
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5961
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x34A"
    },
    "838": {
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5961
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x4A9"
    },
    "841": {
      "fn": "Math.mulDiv",
      "jump": "i",
      "offset": [
        5938,
        5961
      ],
      "op": "JUMP",
      "path": "30"
    },
    "842": {
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5961
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "843": {
      "branch": 24,
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5961
      ],
      "op": "EQ",
      "path": "30"
    },
    "844": {
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5994
      ],
      "op": "DUP1",
      "path": "30"
    },
    "845": {
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5994
      ],
      "op": "ISZERO",
      "path": "30"
    },
    "846": {
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5994
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x367"
    },
    "849": {
      "branch": 24,
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5994
      ],
      "op": "JUMPI",
      "path": "30"
    },
    "850": {
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5994
      ],
      "op": "POP",
      "path": "30"
    },
    "851": {
      "fn": "Math.mulDiv",
      "offset": [
        5993,
        5994
      ],
      "op": "PUSH1",
      "path": "30",
      "value": "0x0"
    },
    "853": {
      "fn": "Math.mulDiv",
      "offset": [
        5978,
        5989
      ],
      "op": "DUP5",
      "path": "30"
    },
    "854": {
      "fn": "Math.mulDiv",
      "offset": [
        5965,
        5990
      ],
      "op": "DUP1",
      "path": "30"
    },
    "855": {
      "fn": "Math.mulDiv",
      "offset": [
        5965,
        5990
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x362"
    },
    "858": {
      "fn": "Math.mulDiv",
      "offset": [
        5965,
        5990
      ],
      "op": "JUMPI",
      "path": "30"
    },
    "859": {
      "fn": "Math.mulDiv",
      "offset": [
        5965,
        5990
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x362"
    },
    "862": {
      "fn": "Math.mulDiv",
      "offset": [
        5965,
        5990
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x5ED"
    },
    "865": {
      "fn": "Math.mulDiv",
      "jump": "i",
      "offset": [
        5965,
        5990
      ],
      "op": "JUMP",
      "path": "30"
    },
    "866": {
      "fn": "Math.mulDiv",
      "offset": [
        5965,
        5990
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "867": {
      "fn": "Math.mulDiv",
      "offset": [
        5975,
        5976
      ],
      "op": "DUP7",
      "path": "30"
    },
    "868": {
      "fn": "Math.mulDiv",
      "offset": [
        5972,
        5973
      ],
      "op": "DUP9",
      "path": "30"
    },
    "869": {
      "fn": "Math.mulDiv",
      "offset": [
        5965,
        5990
      ],
      "op": "MULMOD",
      "path": "30"
    },
    "870": {
      "branch": 25,
      "fn": "Math.mulDiv",
      "offset": [
        5965,
        5994
      ],
      "op": "GT",
      "path": "30"
    },
    "871": {
      "fn": "Math.mulDiv",
      "offset": [
        5938,
        5994
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "872": {
      "fn": "Math.mulDiv",
      "offset": [
        5934,
        6032
      ],
      "op": "ISZERO",
      "path": "30"
    },
    "873": {
      "fn": "Math.mulDiv",
      "offset": [
        5934,
        6032
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x37A"
    },
    "876": {
      "branch": 25,
      "fn": "Math.mulDiv",
      "offset": [
        5934,
        6032
      ],
      "op": "JUMPI",
      "path": "30"
    },
    "877": {
      "fn": "Math.mulDiv",
      "offset": [
        6010,
        6021
      ],
      "op": "PUSH2",
      "path": "30",
      "statement": 8,
      "value": "0x377"
    },
    "880": {
      "fn": "Math.mulDiv",
      "offset": [
        6020,
        6021
      ],
      "op": "PUSH1",
      "path": "30",
      "value": "0x1"
    },
    "882": {
      "fn": "Math.mulDiv",
      "offset": [
        6010,
        6021
      ],
      "op": "DUP3",
      "path": "30"
    },
    "883": {
      "fn": "Math.mulDiv",
      "offset": [
        6010,
        6021
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x625"
    },
    "886": {
      "fn": "Math.mulDiv",
      "jump": "i",
      "offset": [
        6010,
        6021
      ],
      "op": "JUMP",
      "path": "30"
    },
    "887": {
      "fn": "Math.mulDiv",
      "offset": [
        6010,
        6021
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "888": {
      "fn": "Math.mulDiv",
      "offset": [
        6010,
        6021
      ],
      "op": "SWAP1",
      "path": "30"
    },
    "889": {
      "fn": "Math.mulDiv",
      "offset": [
        6010,
        6021
      ],
      "op": "POP",
      "path": "30"
    },
    "890": {
      "fn": "Math.mulDiv",
      "offset": [
        5934,
        6032
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "891": {
      "fn": "Math.mulDiv",
      "offset": [
        6048,
        6054
      ],
      "op": "SWAP6",
      "path": "30",
      "statement": 9
    },
    "892": {
      "fn": "Math.mulDiv",
      "offset": [
        5724,
        6061
      ],
      "op": "SWAP5",
      "path": "30"
    },
    "893": {
      "op": "POP"
    },
    "894": {
      "op": "POP"
    },
    "895": {
      "op": "POP"
    },
    "896": {
      "op": "POP"
    },
    "897": {
      "op": "POP"
    },
    "898": {
      "fn": "Math.mulDiv",
      "jump": "o",
      "offset": [
        5724,
        6061
      ],
      "op": "JUMP",
      "path": "30"
    },
    "899": {
      "fn": "Math.mulDiv",
      "offset": [
        1667,
        5592
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "900": {
      "fn": "Math.mulDiv",
      "offset": [
        1779,
        1793
      ],
      "op": "PUSH1",
      "path": "30",
      "value": "0x0"
    },
    "902": {
      "fn": "Math.mulDiv",
      "offset": [
        1779,
        1793
      ],
      "op": "DUP1",
      "path": "30"
    },
    "903": {
      "fn": "Math.mulDiv",
      "offset": [
        1779,
        1793
      ],
      "op": "DUP1",
      "path": "30"
    },
    "904": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "906": {
      "op": "NOT"
    },
    "907": {
      "fn": "Math.mulDiv",
      "offset": [
        2316,
        2317
      ],
      "op": "DUP6",
      "path": "30"
    },
    "908": {
      "fn": "Math.mulDiv",
      "offset": [
        2313,
        2314
      ],
      "op": "DUP8",
      "path": "30"
    },
    "909": {
      "fn": "Math.mulDiv",
      "offset": [
        2306,
        2326
      ],
      "op": "MULMOD",
      "path": "30"
    },
    "910": {
      "fn": "Math.mulDiv",
      "offset": [
        2359,
        2360
      ],
      "op": "DUP6",
      "path": "30"
    },
    "911": {
      "fn": "Math.mulDiv",
      "offset": [
        2356,
        2357
      ],
      "op": "DUP8",
      "path": "30"
    },
    "912": {
      "fn": "Math.mulDiv",
      "offset": [
        2352,
        2361
      ],
      "op": "MUL",
      "path": "30"
    },
    "913": {
      "fn": "Math.mulDiv",
      "offset": [
        2343,
        2361
      ],
      "op": "SWAP3",
      "path": "30"
    },
    "914": {
      "fn": "Math.mulDiv",
      "offset": [
        2343,
        2361
      ],
      "op": "POP",
      "path": "30"
    },
    "915": {
      "fn": "Math.mulDiv",
      "offset": [
        2414,
        2419
      ],
      "op": "DUP3",
      "path": "30"
    },
    "916": {
      "fn": "Math.mulDiv",
      "offset": [
        2410,
        2412
      ],
      "op": "DUP2",
      "path": "30"
    },
    "917": {
      "fn": "Math.mulDiv",
      "offset": [
        2407,
        2420
      ],
      "op": "LT",
      "path": "30"
    },
    "918": {
      "fn": "Math.mulDiv",
      "offset": [
        2399,
        2404
      ],
      "op": "DUP4",
      "path": "30"
    },
    "919": {
      "fn": "Math.mulDiv",
      "offset": [
        2395,
        2397
      ],
      "op": "DUP3",
      "path": "30"
    },
    "920": {
      "fn": "Math.mulDiv",
      "offset": [
        2391,
        2405
      ],
      "op": "SUB",
      "path": "30"
    },
    "921": {
      "fn": "Math.mulDiv",
      "offset": [
        2387,
        2421
      ],
      "op": "SUB",
      "path": "30"
    },
    "922": {
      "fn": "Math.mulDiv",
      "offset": [
        2378,
        2421
      ],
      "op": "SWAP2",
      "path": "30"
    },
    "923": {
      "fn": "Math.mulDiv",
      "offset": [
        2378,
        2421
      ],
      "op": "POP",
      "path": "30"
    },
    "924": {
      "fn": "Math.mulDiv",
      "offset": [
        2378,
        2421
      ],
      "op": "POP",
      "path": "30"
    },
    "925": {
      "fn": "Math.mulDiv",
      "offset": [
        2516,
        2521
      ],
      "op": "DUP1",
      "path": "30"
    },
    "926": {
      "fn": "Math.mulDiv",
      "offset": [
        2525,
        2526
      ],
      "op": "PUSH1",
      "path": "30",
      "value": "0x0"
    },
    "928": {
      "branch": 26,
      "fn": "Math.mulDiv",
      "offset": [
        2516,
        2526
      ],
      "op": "SUB",
      "path": "30"
    },
    "929": {
      "fn": "Math.mulDiv",
      "offset": [
        2512,
        2587
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x3BD"
    },
    "932": {
      "branch": 26,
      "fn": "Math.mulDiv",
      "offset": [
        2512,
        2587
      ],
      "op": "JUMPI",
      "path": "30"
    },
    "933": {
      "fn": "Math.mulDiv",
      "offset": [
        2561,
        2572
      ],
      "op": "DUP4",
      "path": "30",
      "statement": 10
    },
    "934": {
      "fn": "Math.mulDiv",
      "offset": [
        2553,
        2558
      ],
      "op": "DUP3",
      "path": "30"
    },
    "935": {
      "fn": "Math.mulDiv",
      "offset": [
        2553,
        2572
      ],
      "op": "DUP2",
      "path": "30"
    },
    "936": {
      "fn": "Math.mulDiv",
      "offset": [
        2553,
        2572
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x3B3"
    },
    "939": {
      "fn": "Math.mulDiv",
      "offset": [
        2553,
        2572
      ],
      "op": "JUMPI",
      "path": "30"
    },
    "940": {
      "fn": "Math.mulDiv",
      "offset": [
        2553,
        2572
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x3B3"
    },
    "943": {
      "fn": "Math.mulDiv",
      "offset": [
        2553,
        2572
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x5ED"
    },
    "946": {
      "fn": "Math.mulDiv",
      "jump": "i",
      "offset": [
        2553,
        2572
      ],
      "op": "JUMP",
      "path": "30"
    },
    "947": {
      "fn": "Math.mulDiv",
      "offset": [
        2553,
        2572
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "948": {
      "fn": "Math.mulDiv",
      "offset": [
        2553,
        2572
      ],
      "op": "DIV",
      "path": "30"
    },
    "949": {
      "fn": "Math.mulDiv",
      "offset": [
        2546,
        2572
      ],
      "op": "SWAP3",
      "path": "30"
    },
    "950": {
      "fn": "Math.mulDiv",
      "offset": [
        2546,
        2572
      ],
      "op": "POP",
      "path": "30"
    },
    "951": {
      "fn": "Math.mulDiv",
      "offset": [
        2546,
        2572
      ],
      "op": "POP",
      "path": "30"
    },
    "952": {
      "fn": "Math.mulDiv",
      "offset": [
        2546,
        2572
      ],
      "op": "POP",
      "path": "30"
    },
    "953": {
      "fn": "Math.mulDiv",
      "offset": [
        2546,
        2572
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x307"
    },
    "956": {
      "fn": "Math.mulDiv",
      "offset": [
        2546,
        2572
      ],
      "op": "JUMP",
      "path": "30"
    },
    "957": {
      "fn": "Math.mulDiv",
      "offset": [
        2512,
        2587
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "958": {
      "fn": "Math.mulDiv",
      "offset": [
        2711,
        2716
      ],
      "op": "DUP1",
      "path": "30",
      "statement": 11
    },
    "959": {
      "fn": "Math.mulDiv",
      "offset": [
        2697,
        2708
      ],
      "op": "DUP5",
      "path": "30"
    },
    "960": {
      "branch": 27,
      "fn": "Math.mulDiv",
      "offset": [
        2697,
        2716
      ],
      "op": "GT",
      "path": "30"
    },
    "961": {
      "fn": "Math.mulDiv",
      "offset": [
        2689,
        2717
      ],
      "op": "PUSH2",
      "path": "30",
      "value": "0x3C9"
    },
    "964": {
      "branch": 27,
      "fn": "Math.mulDiv",
      "offset": [
        2689,
        2717
      ],
      "op": "JUMPI",
      "path": "30"
    },
    "965": {
      "fn": "Math.mulDiv",
      "offset": [
        2689,
        2717
      ],
      "op": "PUSH1",
      "path": "30",
      "value": "0x0"
    },
    "967": {
      "fn": "Math.mulDiv",
      "offset": [
        2689,
        2717
      ],
      "op": "DUP1",
      "path": "30"
    },
    "968": {
      "fn": "Math.mulDiv",
      "offset": [
        2689,
        2717
      ],
      "op": "REVERT",
      "path": "30"
    },
    "969": {
      "fn": "Math.mulDiv",
      "offset": [
        2689,
        2717
      ],
      "op": "JUMPDEST",
      "path": "30"
    },
    "970": {
      "fn": "Math.mulDiv",
      "offset": [
        2973,
        2990
      ],
      "op": "PUSH1",
      "path": "30",
      "value": "0x0"
    },
    "972": {
      "fn": "Math.mulDiv",
      "offset": [
        3108,
        3119
      ],
      "op": "DUP5",
      "path": "30"
    },
    "973": {
      "fn": "Math.mulDiv",
      "offset": [
        3105,
        3106
      ],
      "op": "DUP7",
      "path": "30"
    },
    "974": {
      "fn": "Math.mulDiv",
      "offset": [
        3102,
        3103
      ],
      "op": "DUP9",
      "path": "30"
    },
    "975": {
      "fn": "Math.mulDiv",
      "offset": [
        3095,
        3120
      ],
      "op": "MULMOD",
      "path": "30"
    },
    "976": {
      "fn": "Math.mulDiv",
      "offset": [
        4486,
        4487
      ],
      "op": "PUSH1",
      "path": "30",
      "value": "0x2"
    },
    "978": {
      "fn": "Math.mulDiv",
      "offset": [
        4467,
        4468
      ],
      "op": "PUSH1",
      "path": "30",
      "value": "0x3"
    },
    "980": {
      "fn": "Math.mulDiv",
      "offset": [
        3656,
        3657
      ],
      "op": "PUSH1",
      "path": "30",
      "value": "0x1"
    },
    "982": {
      "fn": "Math.mulDiv",
      "offset": [
        3641,
        3653
      ],
      "op": "DUP9",
      "path": "30"
    },
    "983": {
      "fn": "Math.mulDiv",
      "offset": [
        3641,
        3653
      ],
      "op": "NOT",
      "path": "30"
    },
    "984": {
      "fn": "Math.mulDiv",
      "offset": [
        3641,
        3657
      ],
      "op": "DUP2",
      "path": "30"
    },
    "985": {
      "fn": "Math.mulDiv",
      "offset": [
        3641,
        3657
      ],
      "op": "ADD",
      "path": "30"
    },
    "986": {
      "fn": "Math.mulDiv",
      "offset": [
        3626,
        3658
      ],
      "op": "DUP10",
      "path": "30"
    },
    "987": {
      "fn": "Math.mulDiv",
      "offset": [
        3626,
        3658
      ],
      "op": "AND",
      "path": "30"
    },
    "988": {
      "fn": "Math.mulDiv",
      "offset": [
        3761,
        3783
      ],
      "op": "SWAP9",
      "path": "30"
    },
    "989": {
      "fn": "Math.mulDiv",
      "offset": [
        3761,
        3783
      ],
      "op": "DUP10",
      "path": "30"
    },
    "990": {
      "fn": "Math.mulDiv",
      "offset": [
        3761,
        3783
      ],
      "op": "SWAP1",
      "path": "30"
    },
    "991": {
      "fn": "Math.mulDiv",
      "offset": [
        3761,
        3783
      ],
      "op": "DIV",
      "path": "30"
    },
    "992": {
      "fn": "Math.mulDiv",
      "offset": [
        4467,
        4482
      ],
      "op": "SWAP2",
      "path": "30"
    },
    "993": {
      "fn": "Math.mulDiv",
      "offset": [
        4467,
        4482
      ],
      "op": "DUP3",
      "path": "30"
    },
    "994": {
      "fn": "Math.mulDiv",
      "offset": [
        4467,
        4482
      ],
      "op": "MUL",
      "path": "30"
    },
    "995": {
      "fn": "Math.mulDiv",
      "offset": [
        4466,
        4487
      ],
      "op": "DUP4",
      "path": "30"
    },
    "996": {
      "fn": "Math.mulDiv",
      "offset": [
        4466,
        4487
      ],
      "op": "XOR",
      "path": "30"
    },
    "997": {
      "fn": "Math.mulDiv",
      "offset": [
        4719,
        4740
      ],
      "op": "DUP1",
      "path": "30",
      "statement": 12
    },
    "998": {
      "fn": "Math.mulDiv",
      "offset": [
        4719,
        4740
      ],
      "op": "DUP4",
      "path": "30"
    },
    "999": {
      "fn": "Math.mulDiv",
      "offset": [
        4719,
        4740
      ],
      "op": "MUL",
      "path": "30"
    },
    "1000": {
      "fn": "Math.mulDiv",
      "offset": [
        4715,
        4740
      ],
      "op": "DUP5",
      "path": "30"
    },
    "1001": {
      "fn": "Math.mulDiv",
      "offset": [
        4715,
        4740
      ],
      "op": "SUB",
      "path": "30"
    },
    "1002": {
      "fn": "Math.mulDiv",
      "offset": [
        4704,
        4740
      ],
      "op": "MUL",
      "path": "30"
    },
    "1003": {
      "fn": "Math.mulDiv",
      "offset": [
        4788,
        4809
      ],
      "op": "DUP1",
      "path": "30",
      "statement": 13
    },
    "1004": {
      "fn": "Math.mulDiv",
      "offset": [
        4788,
        4809
      ],
      "op": "DUP4",
      "path": "30"
    },
    "1005": {
      "fn": "Math.mulDiv",
      "offset": [
        4788,
        4809
      ],
      "op": "MUL",
      "path": "30"
    },
    "1006": {
      "fn": "Math.mulDiv",
      "offset": [
        4784,
        4809
      ],
      "op": "DUP5",
      "path": "30"
    },
    "1007": {
      "fn": "Math.mulDiv",
      "offset": [
        4784,
        4809
      ],
      "op": "SUB",
      "path": "30"
    },
    "1008": {
      "fn": "Math.mulDiv",
      "offset": [
        4773,
        4809
      ],
      "op": "MUL",
      "path": "30"
    },
    "1009": {
      "fn": "Math.mulDiv",
      "offset": [
        4858,
        4879
      ],
      "op": "DUP1",
      "path": "30",
      "statement": 14
    },
    "1010": {
      "fn": "Math.mulDiv",
      "offset": [
        4858,
        4879
      ],
      "op": "DUP4",
      "path": "30"
    },
    "1011": {
      "fn": "Math.mulDiv",
      "offset": [
        4858,
        4879
      ],
      "op": "MUL",
      "path": "30"
    },
    "1012": {
      "fn": "Math.mulDiv",
      "offset": [
        4854,
        4879
      ],
      "op": "DUP5",
      "path": "30"
    },
    "1013": {
      "fn": "Math.mulDiv",
      "offset": [
        4854,
        4879
      ],
      "op": "SUB",
      "path": "30"
    },
    "1014": {
      "fn": "Math.mulDiv",
      "offset": [
        4843,
        4879
      ],
      "op": "MUL",
      "path": "30"
    },
    "1015": {
      "fn": "Math.mulDiv",
      "offset": [
        4928,
        4949
      ],
      "op": "DUP1",
      "path": "30",
      "statement": 15
    },
    "1016": {
      "fn": "Math.mulDiv",
      "offset": [
        4928,
        4949
      ],
      "op": "DUP4",
      "path": "30"
    },
    "1017": {
      "fn": "Math.mulDiv",
      "offset": [
        4928,
        4949
      ],
      "op": "MUL",
      "path": "30"
    },
    "1018": {
      "fn": "Math.mulDiv",
      "offset": [
        4924,
        4949
      ],
      "op": "DUP5",
      "path": "30"
    },
    "1019": {
      "fn": "Math.mulDiv",
      "offset": [
        4924,
        4949
      ],
      "op": "SUB",
      "path": "30"
    },
    "1020": {
      "fn": "Math.mulDiv",
      "offset": [
        4913,
        4949
      ],
      "op": "MUL",
      "path": "30"
    },
    "1021": {
      "fn": "Math.mulDiv",
      "offset": [
        4998,
        5019
      ],
      "op": "DUP1",
      "path": "30",
      "statement": 16
    },
    "1022": {
      "fn": "Math.mulDiv",
      "offset": [
        4998,
        5019
      ],
      "op": "DUP4",
      "path": "30"
    },
    "1023": {
      "fn": "Math.mulDiv",
      "offset": [
        4998,
        5019
      ],
      "op": "MUL",
      "path": "30"
    },
    "1024": {
      "fn": "Math.mulDiv",
      "offset": [
        4994,
        5019
      ],
      "op": "DUP5",
      "path": "30"
    },
    "1025": {
      "fn": "Math.mulDiv",
      "offset": [
        4994,
        5019
      ],
      "op": "SUB",
      "path": "30"
    },
    "1026": {
      "fn": "Math.mulDiv",
      "offset": [
        4983,
        5019
      ],
      "op": "MUL",
      "path": "30"
    },
    "1027": {
      "fn": "Math.mulDiv",
      "offset": [
        5069,
        5090
      ],
      "op": "SWAP2",
      "path": "30",
      "statement": 17
    },
    "1028": {
      "fn": "Math.mulDiv",
      "offset": [
        5069,
        5090
      ],
      "op": "DUP3",
      "path": "30"
    },
    "1029": {
      "fn": "Math.mulDiv",
      "offset": [
        5069,
        5090
      ],
      "op": "MUL",
      "path": "30"
    },
    "1030": {
      "fn": "Math.mulDiv",
      "offset": [
        5065,
        5090
      ],
      "op": "SWAP1",
      "path": "30"
    },
    "1031": {
      "fn": "Math.mulDiv",
      "offset": [
        5065,
        5090
      ],
      "op": "SWAP3",
      "path": "30"
    },
    "1032": {
      "fn": "Math.mulDiv",
      "offset": [
        5065,
        5090
      ],
      "op": "SUB",
      "path": "30"
    },
    "1033": {
      "fn": "Math.mulDiv",
      "offset": [
        5054,
        5090
      ],
      "op": "MUL",
      "path": "30"
    },
    "1034": {
      "fn": "Math.mulDiv",
      "offset": [
        3611,
        3623
      ],
      "op": "PUSH1",
      "path": "30",
      "value": "0x0"
    },
    "1036": {
      "fn": "Math.mulDiv",
      "offset": [
        4006,
        4018
      ],
      "op": "DUP9",
      "path": "30"
    },
    "1037": {
      "fn": "Math.mulDiv",
      "offset": [
        4006,
        4018
      ],
      "op": "SWAP1",
      "path": "30"
    },
    "1038": {
      "fn": "Math.mulDiv",
      "offset": [
        4006,
        4018
      ],
      "op": "SUB",
      "path": "30"
    },
    "1039": {
      "fn": "Math.mulDiv",
      "offset": [
        4002,
        4025
      ],
      "op": "DUP9",
      "path": "30"
    },
    "1040": {
      "fn": "Math.mulDiv",
      "offset": [
        4002,
        4025
      ],
      "op": "SWAP1",
      "path": "30"
    },
    "1041": {
      "fn": "Math.mulDiv",
      "offset": [
        4002,
        4025
      ],
      "op": "DIV",
      "path": "30"
    },
    "1042": {
      "fn": "Math.mulDiv",
      "offset": [
        3998,
        4029
      ],
      "op": "SWAP1",
      "path": "30"
    },
    "1043": {
      "fn": "Math.mulDiv",
      "offset": [
        3998,
        4029
      ],
      "op": "SWAP2",
      "path": "30"
    },
    "1044": {
      "fn": "Math.mulDiv",
      "offset": [
        3998,
        4029
      ],
      "op": "ADD",
      "path": "30"
    },
    "1045": {
      "fn": "Math.mulDiv",
      "offset": [
        3222,
        3242
      ],
      "op": "DUP6",
      "path": "30"
    },
    "1046": {
      "fn": "Math.mulDiv",
      "offset": [
        3222,
        3242
      ],
      "op": "DUP4",
      "path": "30"
    },
    "1047": {
      "fn": "Math.mulDiv",
      "offset": [
        3222,
        3242
      ],
      "op": "GT",
      "path": "30"
    },
    "1048": {
      "fn": "Math.mulDiv",
      "offset": [
        3211,
        3243
      ],
      "op": "SWAP1",
      "path": "30"
    },
    "1049": {
      "fn": "Math.mulDiv",
      "offset": [
        3211,
        3243
      ],
      "op": "SWAP5",
      "path": "30"
    },
    "1050": {
      "fn": "Math.mulDiv",
      "offset": [
        3211,
        3243
      ],
      "op": "SUB",
      "path": "30"
    },
    "1051": {
      "fn": "Math.mulDiv",
      "offset": [
        4118,
        4130
      ],
      "op": "SWAP4",
      "path": "30",
      "statement": 18
    },
    "1052": {
      "fn": "Math.mulDiv",
      "offset": [
        4118,
        4130
      ],
      "op": "SWAP1",
      "path": "30"
    },
    "1053": {
      "fn": "Math.mulDiv",
      "offset": [
        4118,
        4130
      ],
      "op": "SWAP4",
      "path": "30"
    },
    "1054": {
      "fn": "Math.mulDiv",
      "offset": [
        4118,
        4130
      ],
      "op": "MUL",
      "path": "30"
    },
    "1055": {
      "fn": "Math.mulDiv",
      "offset": [
        3269,
        3290
      ],
      "op": "SWAP4",
      "path": "30"
    },
    "1056": {
      "fn": "Math.mulDiv",
      "offset": [
        3269,
        3290
      ],
      "op": "SUB",
      "path": "30"
    },
    "1057": {
      "fn": "Math.mulDiv",
      "offset": [
        3859,
        3875
      ],
      "op": "SWAP5",
      "path": "30"
    },
    "1058": {
      "fn": "Math.mulDiv",
      "offset": [
        3859,
        3875
      ],
      "op": "SWAP1",
      "path": "30"
    },
    "1059": {
      "fn": "Math.mulDiv",
      "offset": [
        3859,
        3875
      ],
      "op": "SWAP5",
      "path": "30"
    },
    "1060": {
      "fn": "Math.mulDiv",
      "offset": [
        3859,
        3875
      ],
      "op": "DIV",
      "path": "30"
    },
    "1061": {
      "fn": "Math.mulDiv",
      "offset": [
        4109,
        4130
      ],
      "op": "SWAP2",
      "path": "30"
    },
    "1062": {
      "fn": "Math.mulDiv",
      "offset": [
        4109,
        4130
      ],
      "op": "SWAP1",
      "path": "30"
    },
    "1063": {
      "fn": "Math.mulDiv",
      "offset": [
        4109,
        4130
      ],
      "op": "SWAP2",
      "path": "30"
    },
    "1064": {
      "fn": "Math.mulDiv",
      "offset": [
        4109,
        4130
      ],
      "op": "OR",
      "path": "30"
    },
    "1065": {
      "fn": "Math.mulDiv",
      "offset": [
        5533,
        5548
      ],
      "op": "MUL",
      "path": "30",
      "statement": 19
    },
    "1066": {
      "fn": "Math.mulDiv",
      "offset": [
        5533,
        5548
      ],
      "op": "SWAP5",
      "path": "30"
    },
    "1067": {
      "fn": "Math.mulDiv",
      "offset": [
        1667,
        5592
      ],
      "op": "SWAP4",
      "path": "30"
    },
    "1068": {
      "op": "POP"
    },
    "1069": {
      "op": "POP"
    },
    "1070": {
      "op": "POP"
    },
    "1071": {
      "op": "POP"
    },
    "1072": {
      "fn": "Math.mulDiv",
      "jump": "o",
      "offset": [
        1667,
        5592
      ],
      "op": "JUMP",
      "path": "30"
    },
    "1073": {
      "op": "JUMPDEST"
    },
    "1074": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1076": {
      "op": "DUP1"
    },
    "1077": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "1079": {
      "op": "DUP4"
    },
    "1080": {
      "op": "DUP6"
    },
    "1081": {
      "op": "SUB"
    },
    "1082": {
      "op": "SLT"
    },
    "1083": {
      "op": "ISZERO"
    },
    "1084": {
      "op": "PUSH2",
      "value": "0x444"
    },
    "1087": {
      "op": "JUMPI"
    },
    "1088": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1090": {
      "op": "DUP1"
    },
    "1091": {
      "op": "REVERT"
    },
    "1092": {
      "op": "JUMPDEST"
    },
    "1093": {
      "op": "DUP3"
    },
    "1094": {
      "op": "CALLDATALOAD"
    },
    "1095": {
      "op": "SWAP2"
    },
    "1096": {
      "op": "POP"
    },
    "1097": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1099": {
      "op": "DUP4"
    },
    "1100": {
      "op": "ADD"
    },
    "1101": {
      "op": "CALLDATALOAD"
    },
    "1102": {
      "op": "PUSH1",
      "value": "0x3"
    },
    "1104": {
      "op": "DUP2"
    },
    "1105": {
      "op": "LT"
    },
    "1106": {
      "op": "PUSH2",
      "value": "0x45A"
    },
    "1109": {
      "op": "JUMPI"
    },
    "1110": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1112": {
      "op": "DUP1"
    },
    "1113": {
      "op": "REVERT"
    },
    "1114": {
      "op": "JUMPDEST"
    },
    "1115": {
      "op": "DUP1"
    },
    "1116": {
      "op": "SWAP2"
    },
    "1117": {
      "op": "POP"
    },
    "1118": {
      "op": "POP"
    },
    "1119": {
      "op": "SWAP3"
    },
    "1120": {
      "op": "POP"
    },
    "1121": {
      "op": "SWAP3"
    },
    "1122": {
      "op": "SWAP1"
    },
    "1123": {
      "op": "POP"
    },
    "1124": {
      "jump": "o",
      "op": "JUMP"
    },
    "1125": {
      "op": "JUMPDEST"
    },
    "1126": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1128": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1130": {
      "op": "DUP3"
    },
    "1131": {
      "op": "DUP5"
    },
    "1132": {
      "op": "SUB"
    },
    "1133": {
      "op": "SLT"
    },
    "1134": {
      "op": "ISZERO"
    },
    "1135": {
      "op": "PUSH2",
      "value": "0x477"
    },
    "1138": {
      "op": "JUMPI"
    },
    "1139": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1141": {
      "op": "DUP1"
    },
    "1142": {
      "op": "REVERT"
    },
    "1143": {
      "op": "JUMPDEST"
    },
    "1144": {
      "op": "POP"
    },
    "1145": {
      "op": "CALLDATALOAD"
    },
    "1146": {
      "op": "SWAP2"
    },
    "1147": {
      "op": "SWAP1"
    },
    "1148": {
      "op": "POP"
    },
    "1149": {
      "jump": "o",
      "op": "JUMP"
    },
    "1150": {
      "op": "JUMPDEST"
    },
    "1151": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1153": {
      "op": "DUP1"
    },
    "1154": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "1156": {
      "op": "DUP4"
    },
    "1157": {
      "op": "DUP6"
    },
    "1158": {
      "op": "SUB"
    },
    "1159": {
      "op": "SLT"
    },
    "1160": {
      "op": "ISZERO"
    },
    "1161": {
      "op": "PUSH2",
      "value": "0x491"
    },
    "1164": {
      "op": "JUMPI"
    },
    "1165": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1167": {
      "op": "DUP1"
    },
    "1168": {
      "op": "REVERT"
    },
    "1169": {
      "op": "JUMPDEST"
    },
    "1170": {
      "op": "DUP3"
    },
    "1171": {
      "op": "CALLDATALOAD"
    },
    "1172": {
      "op": "SWAP2"
    },
    "1173": {
      "op": "POP"
    },
    "1174": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1176": {
      "op": "DUP4"
    },
    "1177": {
      "op": "ADD"
    },
    "1178": {
      "op": "CALLDATALOAD"
    },
    "1179": {
      "op": "DUP1"
    },
    "1180": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1182": {
      "op": "SIGNEXTEND"
    },
    "1183": {
      "op": "DUP2"
    },
    "1184": {
      "op": "EQ"
    },
    "1185": {
      "op": "PUSH2",
      "value": "0x45A"
    },
    "1188": {
      "op": "JUMPI"
    },
    "1189": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1191": {
      "op": "DUP1"
    },
    "1192": {
      "op": "REVERT"
    },
    "1193": {
      "op": "JUMPDEST"
    },
    "1194": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "1199": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "1201": {
      "op": "SHL"
    },
    "1202": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1204": {
      "op": "MSTORE"
    },
    "1205": {
      "op": "PUSH1",
      "value": "0x21"
    },
    "1207": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "1209": {
      "op": "MSTORE"
    },
    "1210": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1212": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1214": {
      "op": "REVERT"
    },
    "1215": {
      "op": "JUMPDEST"
    },
    "1216": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1218": {
      "op": "DUP2"
    },
    "1219": {
      "op": "ADD"
    },
    "1220": {
      "op": "PUSH1",
      "value": "0x3"
    },
    "1222": {
      "op": "DUP4"
    },
    "1223": {
      "op": "LT"
    },
    "1224": {
      "op": "PUSH2",
      "value": "0x4E1"
    },
    "1227": {
      "op": "JUMPI"
    },
    "1228": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "1233": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "1235": {
      "op": "SHL"
    },
    "1236": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1238": {
      "op": "MSTORE"
    },
    "1239": {
      "op": "PUSH1",
      "value": "0x21"
    },
    "1241": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "1243": {
      "op": "MSTORE"
    },
    "1244": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1246": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1248": {
      "op": "REVERT"
    },
    "1249": {
      "op": "JUMPDEST"
    },
    "1250": {
      "op": "SWAP2"
    },
    "1251": {
      "op": "SWAP1"
    },
    "1252": {
      "op": "MSTORE"
    },
    "1253": {
      "op": "SWAP1"
    },
    "1254": {
      "jump": "o",
      "op": "JUMP"
    },
    "1255": {
      "op": "JUMPDEST"
    },
    "1256": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "1261": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "1263": {
      "op": "SHL"
    },
    "1264": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1266": {
      "op": "MSTORE"
    },
    "1267": {
      "op": "PUSH1",
      "value": "0x11"
    },
    "1269": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "1271": {
      "op": "MSTORE"
    },
    "1272": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1274": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1276": {
      "op": "REVERT"
    },
    "1277": {
      "op": "JUMPDEST"
    },
    "1278": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1280": {
      "op": "DUP2"
    },
    "1281": {
      "op": "DUP2"
    },
    "1282": {
      "op": "JUMPDEST"
    },
    "1283": {
      "op": "DUP1"
    },
    "1284": {
      "op": "DUP6"
    },
    "1285": {
      "op": "GT"
    },
    "1286": {
      "op": "ISZERO"
    },
    "1287": {
      "op": "PUSH2",
      "value": "0x538"
    },
    "1290": {
      "op": "JUMPI"
    },
    "1291": {
      "op": "DUP2"
    },
    "1292": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1294": {
      "op": "NOT"
    },
    "1295": {
      "op": "DIV"
    },
    "1296": {
      "op": "DUP3"
    },
    "1297": {
      "op": "GT"
    },
    "1298": {
      "op": "ISZERO"
    },
    "1299": {
      "op": "PUSH2",
      "value": "0x51E"
    },
    "1302": {
      "op": "JUMPI"
    },
    "1303": {
      "op": "PUSH2",
      "value": "0x51E"
    },
    "1306": {
      "op": "PUSH2",
      "value": "0x4E7"
    },
    "1309": {
      "jump": "i",
      "op": "JUMP"
    },
    "1310": {
      "op": "JUMPDEST"
    },
    "1311": {
      "op": "DUP1"
    },
    "1312": {
      "op": "DUP6"
    },
    "1313": {
      "op": "AND"
    },
    "1314": {
      "op": "ISZERO"
    },
    "1315": {
      "op": "PUSH2",
      "value": "0x52B"
    },
    "1318": {
      "op": "JUMPI"
    },
    "1319": {
      "op": "SWAP2"
    },
    "1320": {
      "op": "DUP2"
    },
    "1321": {
      "op": "MUL"
    },
    "1322": {
      "op": "SWAP2"
    },
    "1323": {
      "op": "JUMPDEST"
    },
    "1324": {
      "op": "SWAP4"
    },
    "1325": {
      "op": "DUP5"
    },
    "1326": {
      "op": "SHR"
    },
    "1327": {
      "op": "SWAP4"
    },
    "1328": {
      "op": "SWAP1"
    },
    "1329": {
      "op": "DUP1"
    },
    "1330": {
      "op": "MUL"
    },
    "1331": {
      "op": "SWAP1"
    },
    "1332": {
      "op": "PUSH2",
      "value": "0x502"
    },
    "1335": {
      "op": "JUMP"
    },
    "1336": {
      "op": "JUMPDEST"
    },
    "1337": {
      "op": "POP"
    },
    "1338": {
      "op": "SWAP3"
    },
    "1339": {
      "op": "POP"
    },
    "1340": {
      "op": "SWAP3"
    },
    "1341": {
      "op": "SWAP1"
    },
    "1342": {
      "op": "POP"
    },
    "1343": {
      "jump": "o",
      "op": "JUMP"
    },
    "1344": {
      "op": "JUMPDEST"
    },
    "1345": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1347": {
      "op": "DUP3"
    },
    "1348": {
      "op": "PUSH2",
      "value": "0x54F"
    },
    "1351": {
      "op": "JUMPI"
    },
    "1352": {
      "op": "POP"
    },
    "1353": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1355": {
      "op": "PUSH2",
      "value": "0x1ED"
    },
    "1358": {
      "op": "JUMP"
    },
    "1359": {
      "op": "JUMPDEST"
    },
    "1360": {
      "op": "DUP2"
    },
    "1361": {
      "op": "PUSH2",
      "value": "0x55C"
    },
    "1364": {
      "op": "JUMPI"
    },
    "1365": {
      "op": "POP"
    },
    "1366": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1368": {
      "op": "PUSH2",
      "value": "0x1ED"
    },
    "1371": {
      "op": "JUMP"
    },
    "1372": {
      "op": "JUMPDEST"
    },
    "1373": {
      "op": "DUP2"
    },
    "1374": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1376": {
      "op": "DUP2"
    },
    "1377": {
      "op": "EQ"
    },
    "1378": {
      "op": "PUSH2",
      "value": "0x572"
    },
    "1381": {
      "op": "JUMPI"
    },
    "1382": {
      "op": "PUSH1",
      "value": "0x2"
    },
    "1384": {
      "op": "DUP2"
    },
    "1385": {
      "op": "EQ"
    },
    "1386": {
      "op": "PUSH2",
      "value": "0x57C"
    },
    "1389": {
      "op": "JUMPI"
    },
    "1390": {
      "op": "PUSH2",
      "value": "0x598"
    },
    "1393": {
      "op": "JUMP"
    },
    "1394": {
      "op": "JUMPDEST"
    },
    "1395": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1397": {
      "op": "SWAP2"
    },
    "1398": {
      "op": "POP"
    },
    "1399": {
      "op": "POP"
    },
    "1400": {
      "op": "PUSH2",
      "value": "0x1ED"
    },
    "1403": {
      "op": "JUMP"
    },
    "1404": {
      "op": "JUMPDEST"
    },
    "1405": {
      "op": "PUSH1",
      "value": "0xFF"
    },
    "1407": {
      "op": "DUP5"
    },
    "1408": {
      "op": "GT"
    },
    "1409": {
      "op": "ISZERO"
    },
    "1410": {
      "op": "PUSH2",
      "value": "0x58D"
    },
    "1413": {
      "op": "JUMPI"
    },
    "1414": {
      "op": "PUSH2",
      "value": "0x58D"
    },
    "1417": {
      "op": "PUSH2",
      "value": "0x4E7"
    },
    "1420": {
      "jump": "i",
      "op": "JUMP"
    },
    "1421": {
      "op": "JUMPDEST"
    },
    "1422": {
      "op": "POP"
    },
    "1423": {
      "op": "POP"
    },
    "1424": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1426": {
      "op": "DUP3"
    },
    "1427": {
      "op": "SHL"
    },
    "1428": {
      "op": "PUSH2",
      "value": "0x1ED"
    },
    "1431": {
      "op": "JUMP"
    },
    "1432": {
      "op": "JUMPDEST"
    },
    "1433": {
      "op": "POP"
    },
    "1434": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1436": {
      "op": "DUP4"
    },
    "1437": {
      "op": "LT"
    },
    "1438": {
      "op": "PUSH2",
      "value": "0x133"
    },
    "1441": {
      "op": "DUP4"
    },
    "1442": {
      "op": "LT"
    },
    "1443": {
      "op": "AND"
    },
    "1444": {
      "op": "PUSH1",
      "value": "0x4E"
    },
    "1446": {
      "op": "DUP5"
    },
    "1447": {
      "op": "LT"
    },
    "1448": {
      "op": "PUSH1",
      "value": "0xB"
    },
    "1450": {
      "op": "DUP5"
    },
    "1451": {
      "op": "LT"
    },
    "1452": {
      "op": "AND"
    },
    "1453": {
      "op": "OR"
    },
    "1454": {
      "op": "ISZERO"
    },
    "1455": {
      "op": "PUSH2",
      "value": "0x5BB"
    },
    "1458": {
      "op": "JUMPI"
    },
    "1459": {
      "op": "POP"
    },
    "1460": {
      "op": "DUP2"
    },
    "1461": {
      "op": "DUP2"
    },
    "1462": {
      "op": "EXP"
    },
    "1463": {
      "op": "PUSH2",
      "value": "0x1ED"
    },
    "1466": {
      "op": "JUMP"
    },
    "1467": {
      "op": "JUMPDEST"
    },
    "1468": {
      "op": "PUSH2",
      "value": "0x5C5"
    },
    "1471": {
      "op": "DUP4"
    },
    "1472": {
      "op": "DUP4"
    },
    "1473": {
      "op": "PUSH2",
      "value": "0x4FD"
    },
    "1476": {
      "jump": "i",
      "op": "JUMP"
    },
    "1477": {
      "op": "JUMPDEST"
    },
    "1478": {
      "op": "DUP1"
    },
    "1479": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1481": {
      "op": "NOT"
    },
    "1482": {
      "op": "DIV"
    },
    "1483": {
      "op": "DUP3"
    },
    "1484": {
      "op": "GT"
    },
    "1485": {
      "op": "ISZERO"
    },
    "1486": {
      "op": "PUSH2",
      "value": "0x5D9"
    },
    "1489": {
      "op": "JUMPI"
    },
    "1490": {
      "op": "PUSH2",
      "value": "0x5D9"
    },
    "1493": {
      "op": "PUSH2",
      "value": "0x4E7"
    },
    "1496": {
      "jump": "i",
      "op": "JUMP"
    },
    "1497": {
      "op": "JUMPDEST"
    },
    "1498": {
      "op": "MUL"
    },
    "1499": {
      "op": "SWAP4"
    },
    "1500": {
      "op": "SWAP3"
    },
    "1501": {
      "op": "POP"
    },
    "1502": {
      "op": "POP"
    },
    "1503": {
      "op": "POP"
    },
    "1504": {
      "jump": "o",
      "op": "JUMP"
    },
    "1505": {
      "op": "JUMPDEST"
    },
    "1506": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1508": {
      "op": "PUSH2",
      "value": "0x307"
    },
    "1511": {
      "op": "DUP4"
    },
    "1512": {
      "op": "DUP4"
    },
    "1513": {
      "op": "PUSH2",
      "value": "0x540"
    },
    "1516": {
      "jump": "i",
      "op": "JUMP"
    },
    "1517": {
      "op": "JUMPDEST"
    },
    "1518": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "1523": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "1525": {
      "op": "SHL"
    },
    "1526": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1528": {
      "op": "MSTORE"
    },
    "1529": {
      "op": "PUSH1",
      "value": "0x12"
    },
    "1531": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "1533": {
      "op": "MSTORE"
    },
    "1534": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1536": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1538": {
      "op": "REVERT"
    },
    "1539": {
      "op": "JUMPDEST"
    },
    "1540": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1542": {
      "op": "DUP3"
    },
    "1543": {
      "op": "PUSH2",
      "value": "0x620"
    },
    "1546": {
      "op": "JUMPI"
    },
    "1547": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "1552": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "1554": {
      "op": "SHL"
    },
    "1555": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1557": {
      "op": "MSTORE"
    },
    "1558": {
      "op": "PUSH1",
      "value": "0x12"
    },
    "1560": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "1562": {
      "op": "MSTORE"
    },
    "1563": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1565": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1567": {
      "op": "REVERT"
    },
    "1568": {
      "op": "JUMPDEST"
    },
    "1569": {
      "op": "POP"
    },
    "1570": {
      "op": "DIV"
    },
    "1571": {
      "op": "SWAP1"
    },
    "1572": {
      "jump": "o",
      "op": "JUMP"
    },
    "1573": {
      "op": "JUMPDEST"
    },
    "1574": {
      "op": "DUP1"
    },
    "1575": {
      "op": "DUP3"
    },
    "1576": {
      "op": "ADD"
    },
    "1577": {
      "op": "DUP1"
    },
    "1578": {
      "op": "DUP3"
    },
    "1579": {
      "op": "GT"
    },
    "1580": {
      "op": "ISZERO"
    },
    "1581": {
      "op": "PUSH2",
      "value": "0x1ED"
    },
    "1584": {
      "op": "JUMPI"
    },
    "1585": {
      "op": "PUSH2",
      "value": "0x1ED"
    },
    "1588": {
      "op": "PUSH2",
      "value": "0x4E7"
    },
    "1591": {
      "jump": "i",
      "op": "JUMP"
    },
    "1592": {
      "op": "JUMPDEST"
    },
    "1593": {
      "op": "DUP1"
    },
    "1594": {
      "op": "DUP3"
    },
    "1595": {
      "op": "MUL"
    },
    "1596": {
      "op": "DUP2"
    },
    "1597": {
      "op": "ISZERO"
    },
    "1598": {
      "op": "DUP3"
    },
    "1599": {
      "op": "DUP3"
    },
    "1600": {
      "op": "DIV"
    },
    "1601": {
      "op": "DUP5"
    },
    "1602": {
      "op": "EQ"
    },
    "1603": {
      "op": "OR"
    },
    "1604": {
      "op": "PUSH2",
      "value": "0x1ED"
    },
    "1607": {
      "op": "JUMPI"
    },
    "1608": {
      "op": "PUSH2",
      "value": "0x1ED"
    },
    "1611": {
      "op": "PUSH2",
      "value": "0x4E7"
    },
    "1614": {
      "jump": "i",
      "op": "JUMP"
    },
    "1615": {
      "op": "JUMPDEST"
    },
    "1616": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1618": {
      "op": "DUP2"
    },
    "1619": {
      "op": "DUP2"
    },
    "1620": {
      "op": "SIGNEXTEND"
    },
    "1621": {
      "op": "SWAP1"
    },
    "1622": {
      "op": "DUP4"
    },
    "1623": {
      "op": "SWAP1"
    },
    "1624": {
      "op": "SIGNEXTEND"
    },
    "1625": {
      "op": "ADD"
    },
    "1626": {
      "op": "PUSH1",
      "value": "0x7F"
    },
    "1628": {
      "op": "DUP2"
    },
    "1629": {
      "op": "SGT"
    },
    "1630": {
      "op": "PUSH1",
      "value": "0x7F"
    },
    "1632": {
      "op": "NOT"
    },
    "1633": {
      "op": "DUP3"
    },
    "1634": {
      "op": "SLT"
    },
    "1635": {
      "op": "OR"
    },
    "1636": {
      "op": "ISZERO"
    },
    "1637": {
      "op": "PUSH2",
      "value": "0x1ED"
    },
    "1640": {
      "op": "JUMPI"
    },
    "1641": {
      "op": "PUSH2",
      "value": "0x1ED"
    },
    "1644": {
      "op": "PUSH2",
      "value": "0x4E7"
    },
    "1647": {
      "jump": "i",
      "op": "JUMP"
    },
    "1648": {
      "op": "JUMPDEST"
    },
    "1649": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1651": {
      "op": "DUP3"
    },
    "1652": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1654": {
      "op": "SIGNEXTEND"
    },
    "1655": {
      "op": "DUP3"
    },
    "1656": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1658": {
      "op": "SIGNEXTEND"
    },
    "1659": {
      "op": "MUL"
    },
    "1660": {
      "op": "DUP1"
    },
    "1661": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1663": {
      "op": "SIGNEXTEND"
    },
    "1664": {
      "op": "SWAP2"
    },
    "1665": {
      "op": "POP"
    },
    "1666": {
      "op": "DUP1"
    },
    "1667": {
      "op": "DUP3"
    },
    "1668": {
      "op": "EQ"
    },
    "1669": {
      "op": "PUSH2",
      "value": "0x690"
    },
    "1672": {
      "op": "JUMPI"
    },
    "1673": {
      "op": "PUSH2",
      "value": "0x690"
    },
    "1676": {
      "op": "PUSH2",
      "value": "0x4E7"
    },
    "1679": {
      "jump": "i",
      "op": "JUMP"
    },
    "1680": {
      "op": "JUMPDEST"
    },
    "1681": {
      "op": "POP"
    },
    "1682": {
      "op": "SWAP3"
    },
    "1683": {
      "op": "SWAP2"
    },
    "1684": {
      "op": "POP"
    },
    "1685": {
      "op": "POP"
    },
    "1686": {
      "jump": "o",
      "op": "JUMP"
    },
    "1687": {
      "op": "JUMPDEST"
    },
    "1688": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1690": {
      "op": "PUSH2",
      "value": "0x307"
    },
    "1693": {
      "op": "PUSH1",
      "value": "0xFF"
    },
    "1695": {
      "op": "DUP5"
    },
    "1696": {
      "op": "AND"
    },
    "1697": {
      "op": "DUP4"
    },
    "1698": {
      "op": "PUSH2",
      "value": "0x540"
    },
    "1701": {
      "jump": "i",
      "op": "JUMP"
    }
  },
  "sha1": "5b06ffbd440edf12bd0b75eceaf56003f531beac",
  "source": "// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.19;\n\nimport {Math} from \"@openzeppelin/contracts/utils/math/Math.sol\";\n\ntype UFixed is uint256;\n\nusing {\n    addUFixed as +,\n    subUFixed as -,\n    mulUFixed as *,\n    divUFixed as /,\n    gtUFixed as >,\n    gteUFixed as >=,\n    ltUFixed as <,\n    lteUFixed as <=,\n    eqUFixed as ==\n}\n    for UFixed global;\n\nfunction addUFixed(UFixed a, UFixed b) pure returns(UFixed) {\n    return UFixed.wrap(UFixed.unwrap(a) + UFixed.unwrap(b));\n}\n\nfunction subUFixed(UFixed a, UFixed b) pure returns(UFixed) {\n    require(a >= b, \"ERROR:UFM-010:NEGATIVE_RESULT\");\n\n    return UFixed.wrap(UFixed.unwrap(a) - UFixed.unwrap(b));\n}\n\nfunction mulUFixed(UFixed a, UFixed b) pure returns(UFixed) {\n    return UFixed.wrap(Math.mulDiv(UFixed.unwrap(a), UFixed.unwrap(b), 10 ** 18));\n}\n\nfunction divUFixed(UFixed a, UFixed b) pure returns(UFixed) {\n    require(UFixed.unwrap(b) > 0, \"ERROR:UFM-020:DIVISOR_ZERO\");\n\n    return UFixed.wrap(\n        Math.mulDiv(\n            UFixed.unwrap(a), \n            10 ** 18,\n            UFixed.unwrap(b)));\n}\n\nfunction gtUFixed(UFixed a, UFixed b) pure returns(bool isGreaterThan) {\n    return UFixed.unwrap(a) > UFixed.unwrap(b);\n}\n\nfunction gteUFixed(UFixed a, UFixed b) pure returns(bool isGreaterThan) {\n    return UFixed.unwrap(a) >= UFixed.unwrap(b);\n}\n\nfunction ltUFixed(UFixed a, UFixed b) pure returns(bool isGreaterThan) {\n    return UFixed.unwrap(a) < UFixed.unwrap(b);\n}\n\nfunction lteUFixed(UFixed a, UFixed b) pure returns(bool isGreaterThan) {\n    return UFixed.unwrap(a) <= UFixed.unwrap(b);\n}\n\nfunction eqUFixed(UFixed a, UFixed b) pure returns(bool isEqual) {\n    return UFixed.unwrap(a) == UFixed.unwrap(b);\n}\n\nfunction gtz(UFixed a) pure returns(bool isZero) {\n    return UFixed.unwrap(a) > 0;\n}\n\nfunction eqz(UFixed a) pure returns(bool isZero) {\n    return UFixed.unwrap(a) == 0;\n}\n\nfunction delta(UFixed a, UFixed b) pure returns(UFixed) {\n    if(a > b) {\n        return a - b;\n    }\n\n    return b - a;\n}\n\ncontract UFixedType {\n\n    enum Rounding {\n        Down, // floor(value)\n        Up, // = ceil(value)\n        HalfUp // = floor(value + 0.5)\n    }\n\n    int8 public constant EXP = 18;\n    uint256 public constant MULTIPLIER = 10 ** uint256(int256(EXP));\n    uint256 public constant MULTIPLIER_HALF = MULTIPLIER / 2;\n    \n    Rounding public constant ROUNDING_DEFAULT = Rounding.HalfUp;\n\n    function decimals() public pure returns(uint256) {\n        return uint8(EXP);\n    }\n\n    function itof(uint256 a)\n        public\n        pure\n        returns(UFixed)\n    {\n        return UFixed.wrap(a * MULTIPLIER);\n    }\n\n    function itof(uint256 a, int8 exp)\n        public\n        pure\n        returns(UFixed)\n    {\n        require(EXP + exp >= 0, \"ERROR:FM-010:EXPONENT_TOO_SMALL\");\n        require(EXP + exp <= 2 * EXP, \"ERROR:FM-011:EXPONENT_TOO_LARGE\");\n\n        return UFixed.wrap(a * 10 ** uint8(EXP + exp));\n    }\n\n    function ftoi(UFixed a)\n        public\n        pure\n        returns(uint256)\n    {\n        return ftoi(a, ROUNDING_DEFAULT);\n    }\n\n    function ftoi(UFixed a, Rounding rounding)\n        public\n        pure\n        returns(uint256)\n    {\n        if(rounding == Rounding.HalfUp) {\n            return Math.mulDiv(UFixed.unwrap(a) + MULTIPLIER_HALF, 1, MULTIPLIER, Math.Rounding.Down);\n        } else if(rounding == Rounding.Down) {\n            return Math.mulDiv(UFixed.unwrap(a), 1, MULTIPLIER, Math.Rounding.Down);\n        } else {\n            return Math.mulDiv(UFixed.unwrap(a), 1, MULTIPLIER, Math.Rounding.Up);\n        }\n    }\n}\n",
  "sourceMap": "2004:1551:47:-:0;;;;;;;;;;;;;;;;;;;",
  "sourcePath": "contracts/shared/UFixedMath.sol",
  "type": "contract"
}