{
  "contractName": "PriceConverter",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_base",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_quote",
          "type": "address"
        },
        {
          "internalType": "uint8",
          "name": "_decimals",
          "type": "uint8"
        }
      ],
      "name": "getDerivedPrice",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.11+commit.d7f03943\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_base\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_quote\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"name\":\"getDerivedPrice\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/libraries/PriceConverter.sol\":\"PriceConverter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0xf2b6c9adb3552254df1445b73563cf014434ff5e78663e9b961b6c059506ceb5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c1f59e0c7334c22fb54288728fc32546bdc9c8133d6db0d60223e3c28f52120\",\"dweb:/ipfs/QmeuxawUVBhMWQJXaEhhnubCTc4Jwn5wYK8gbhq6NjrpfG\"]},\"project:/contracts/libraries/PriceConverter.sol\":{\"keccak256\":\"0x1c7379e2f032a302a999b9f49bd5b0d79bc5d260aeae8d8e173dfdcae2bebbb8\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://c8968f30c2b173c3fa28a669fe95d09721ffad661b7632d36de73a286e06d124\",\"dweb:/ipfs/QmXCh1gfzimGC3WLPLyUSsdy7UWGNKt6Fsc7f45sRyYRJe\"]}},\"version\":1}",
  "bytecode": "0x61063a61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063974366551461003a575b600080fd5b61004d61004836600461034a565b61005f565b60405190815260200160405180910390f35b600060ff8216158015906100775750601260ff831611155b6100bb5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964205f646563696d616c7360781b604482015260640160405180910390fd5b60006100cb60ff8416600a61048d565b90506000856001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561010d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013191906104b3565b5050509150506000866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019b9190610503565b90506101a88282876102ab565b91506000866001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e91906104b3565b5050509150506000876001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102789190610503565b90506102858282896102ab565b9150816102928686610520565b61029c91906105a5565b955050505050505b9392505050565b60008160ff168360ff1610156102e4576102c583836105e1565b6102d39060ff16600a61048d565b6102dd9085610520565b90506102a4565b8160ff168360ff161115610314576102fc82846105e1565b61030a9060ff16600a61048d565b6102dd90856105a5565b509192915050565b80356001600160a01b038116811461033357600080fd5b919050565b60ff8116811461034757600080fd5b50565b60008060006060848603121561035f57600080fd5b6103688461031c565b92506103766020850161031c565b9150604084013561038681610338565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156103e25781600019048211156103c8576103c8610391565b808516156103d557918102915b93841c93908002906103ac565b509250929050565b6000826103f957506001610487565b8161040657506000610487565b816001811461041c576002811461042657610442565b6001915050610487565b60ff84111561043757610437610391565b50506001821b610487565b5060208310610133831016604e8410600b8410161715610465575081810a610487565b61046f83836103a7565b806000190482111561048357610483610391565b0290505b92915050565b60006102a483836103ea565b805169ffffffffffffffffffff8116811461033357600080fd5b600080600080600060a086880312156104cb57600080fd5b6104d486610499565b94506020860151935060408601519250606086015191506104f760808701610499565b90509295509295909350565b60006020828403121561051557600080fd5b81516102a481610338565b60006001600160ff1b038184138284138082168684048611161561054657610546610391565b600160ff1b600087128281168783058912161561056557610565610391565b6000871292508782058712848416161561058157610581610391565b8785058712818416161561059757610597610391565b505050929093029392505050565b6000826105c257634e487b7160e01b600052601260045260246000fd5b600160ff1b8214600019841416156105dc576105dc610391565b500590565b600060ff821660ff8416808210156105fb576105fb610391565b9003939250505056fea2646970667358221220dcc34f245f5fa12a286d43e871d260b4db7d2416d656d5cf035e02c7bd9eb7c964736f6c634300080b0033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063974366551461003a575b600080fd5b61004d61004836600461034a565b61005f565b60405190815260200160405180910390f35b600060ff8216158015906100775750601260ff831611155b6100bb5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964205f646563696d616c7360781b604482015260640160405180910390fd5b60006100cb60ff8416600a61048d565b90506000856001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561010d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013191906104b3565b5050509150506000866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019b9190610503565b90506101a88282876102ab565b91506000866001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e91906104b3565b5050509150506000876001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102789190610503565b90506102858282896102ab565b9150816102928686610520565b61029c91906105a5565b955050505050505b9392505050565b60008160ff168360ff1610156102e4576102c583836105e1565b6102d39060ff16600a61048d565b6102dd9085610520565b90506102a4565b8160ff168360ff161115610314576102fc82846105e1565b61030a9060ff16600a61048d565b6102dd90856105a5565b509192915050565b80356001600160a01b038116811461033357600080fd5b919050565b60ff8116811461034757600080fd5b50565b60008060006060848603121561035f57600080fd5b6103688461031c565b92506103766020850161031c565b9150604084013561038681610338565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156103e25781600019048211156103c8576103c8610391565b808516156103d557918102915b93841c93908002906103ac565b509250929050565b6000826103f957506001610487565b8161040657506000610487565b816001811461041c576002811461042657610442565b6001915050610487565b60ff84111561043757610437610391565b50506001821b610487565b5060208310610133831016604e8410600b8410161715610465575081810a610487565b61046f83836103a7565b806000190482111561048357610483610391565b0290505b92915050565b60006102a483836103ea565b805169ffffffffffffffffffff8116811461033357600080fd5b600080600080600060a086880312156104cb57600080fd5b6104d486610499565b94506020860151935060408601519250606086015191506104f760808701610499565b90509295509295909350565b60006020828403121561051557600080fd5b81516102a481610338565b60006001600160ff1b038184138284138082168684048611161561054657610546610391565b600160ff1b600087128281168783058912161561056557610565610391565b6000871292508782058712848416161561058157610581610391565b8785058712818416161561059757610597610391565b505050929093029392505050565b6000826105c257634e487b7160e01b600052601260045260246000fd5b600160ff1b8214600019841416156105dc576105dc610391565b500590565b600060ff821660ff8416808210156105fb576105fb610391565b9003939250505056fea2646970667358221220dcc34f245f5fa12a286d43e871d260b4db7d2416d656d5cf035e02c7bd9eb7c964736f6c634300080b0033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:4711:56",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:56",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "63:124:56",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "73:29:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "95:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "82:12:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "82:20:56"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "73:5:56"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "165:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "174:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "177:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "167:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "167:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "167:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "124:5:56"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "135:5:56"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "150:3:56",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "155:1:56",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "146:3:56"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "146:11:56"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "159:1:56",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "142:3:56"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "142:19:56"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "131:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "131:31:56"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "121:2:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "121:42:56"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "114:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "114:50:56"
                  },
                  "nodeType": "YulIf",
                  "src": "111:70:56"
                }
              ]
            },
            "name": "abi_decode_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "42:6:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "53:5:56",
                "type": ""
              }
            ],
            "src": "14:173:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "235:71:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "284:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "293:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "296:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "286:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "286:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "286:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "258:5:56"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "269:5:56"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "276:4:56",
                                "type": "",
                                "value": "0xff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "265:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "265:16:56"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "255:2:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "255:27:56"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "248:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "248:35:56"
                  },
                  "nodeType": "YulIf",
                  "src": "245:55:56"
                }
              ]
            },
            "name": "validator_revert_uint8",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "224:5:56",
                "type": ""
              }
            ],
            "src": "192:114:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "413:289:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "459:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "468:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "471:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "461:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "461:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "461:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "434:7:56"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "443:9:56"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "430:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "430:23:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "455:2:56",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "426:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "426:32:56"
                  },
                  "nodeType": "YulIf",
                  "src": "423:52:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "484:39:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "513:9:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "494:18:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "494:29:56"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "484:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "532:48:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "565:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "576:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "561:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "561:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nodeType": "YulIdentifier",
                      "src": "542:18:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "542:38:56"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "532:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "589:45:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "619:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "630:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "615:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "615:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "602:12:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "602:32:56"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "593:5:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "666:5:56"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_uint8",
                      "nodeType": "YulIdentifier",
                      "src": "643:22:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "643:29:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "643:29:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "681:15:56",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "691:5:56"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "681:6:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_addresst_uint8",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "363:9:56",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "374:7:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "386:6:56",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "394:6:56",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "402:6:56",
                "type": ""
              }
            ],
            "src": "311:391:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "814:76:56",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "824:26:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "836:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "847:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "832:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "832:18:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "824:4:56"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "866:9:56"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "877:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "859:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "859:25:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "859:25:56"
                }
              ]
            },
            "name": "abi_encode_tuple_t_int256__to_t_int256__fromStack_library_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "783:9:56",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "794:6:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "805:4:56",
                "type": ""
              }
            ],
            "src": "707:183:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1069:167:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1086:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1097:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1079:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1079:21:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1079:21:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1120:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1131:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1116:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1116:18:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1136:2:56",
                        "type": "",
                        "value": "17"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1109:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1109:30:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1109:30:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1159:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1170:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1155:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1155:18:56"
                      },
                      {
                        "hexValue": "496e76616c6964205f646563696d616c73",
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "1175:19:56",
                        "type": "",
                        "value": "Invalid _decimals"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1148:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1148:47:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1148:47:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1204:26:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1216:9:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1227:2:56",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1212:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1212:18:56"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "1204:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_6f86eb67bd648d27ce4a2d90e695fc1ea799c79d8ef356679c0180998e1c1453__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1046:9:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "1060:4:56",
                "type": ""
              }
            ],
            "src": "895:341:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1273:95:56",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1290:1:56",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1297:3:56",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1302:10:56",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "1293:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1293:20:56"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1283:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1283:31:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1283:31:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1330:1:56",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1333:4:56",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1323:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1323:15:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1323:15:56"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1354:1:56",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1357:4:56",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "1347:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1347:15:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1347:15:56"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nodeType": "YulFunctionDefinition",
            "src": "1241:127:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1437:358:56",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1447:16:56",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "1462:1:56",
                    "type": "",
                    "value": "1"
                  },
                  "variables": [
                    {
                      "name": "power_1",
                      "nodeType": "YulTypedName",
                      "src": "1451:7:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1472:16:56",
                  "value": {
                    "name": "power_1",
                    "nodeType": "YulIdentifier",
                    "src": "1481:7:56"
                  },
                  "variableNames": [
                    {
                      "name": "power",
                      "nodeType": "YulIdentifier",
                      "src": "1472:5:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1497:13:56",
                  "value": {
                    "name": "_base",
                    "nodeType": "YulIdentifier",
                    "src": "1505:5:56"
                  },
                  "variableNames": [
                    {
                      "name": "base",
                      "nodeType": "YulIdentifier",
                      "src": "1497:4:56"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1561:228:56",
                    "statements": [
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1606:22:56",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "functionName": {
                                  "name": "panic_error_0x11",
                                  "nodeType": "YulIdentifier",
                                  "src": "1608:16:56"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1608:18:56"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1608:18:56"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "base",
                              "nodeType": "YulIdentifier",
                              "src": "1581:4:56"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "1595:1:56",
                                      "type": "",
                                      "value": "0"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nodeType": "YulIdentifier",
                                    "src": "1591:3:56"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1591:6:56"
                                },
                                {
                                  "name": "base",
                                  "nodeType": "YulIdentifier",
                                  "src": "1599:4:56"
                                }
                              ],
                              "functionName": {
                                "name": "div",
                                "nodeType": "YulIdentifier",
                                "src": "1587:3:56"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1587:17:56"
                            }
                          ],
                          "functionName": {
                            "name": "gt",
                            "nodeType": "YulIdentifier",
                            "src": "1578:2:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1578:27:56"
                        },
                        "nodeType": "YulIf",
                        "src": "1575:53:56"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1667:29:56",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1669:25:56",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "power",
                                    "nodeType": "YulIdentifier",
                                    "src": "1682:5:56"
                                  },
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "1689:4:56"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "1678:3:56"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1678:16:56"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "1669:5:56"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "exponent",
                              "nodeType": "YulIdentifier",
                              "src": "1648:8:56"
                            },
                            {
                              "name": "power_1",
                              "nodeType": "YulIdentifier",
                              "src": "1658:7:56"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "1644:3:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1644:22:56"
                        },
                        "nodeType": "YulIf",
                        "src": "1641:55:56"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "1709:23:56",
                        "value": {
                          "arguments": [
                            {
                              "name": "base",
                              "nodeType": "YulIdentifier",
                              "src": "1721:4:56"
                            },
                            {
                              "name": "base",
                              "nodeType": "YulIdentifier",
                              "src": "1727:4:56"
                            }
                          ],
                          "functionName": {
                            "name": "mul",
                            "nodeType": "YulIdentifier",
                            "src": "1717:3:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1717:15:56"
                        },
                        "variableNames": [
                          {
                            "name": "base",
                            "nodeType": "YulIdentifier",
                            "src": "1709:4:56"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "1745:34:56",
                        "value": {
                          "arguments": [
                            {
                              "name": "power_1",
                              "nodeType": "YulIdentifier",
                              "src": "1761:7:56"
                            },
                            {
                              "name": "exponent",
                              "nodeType": "YulIdentifier",
                              "src": "1770:8:56"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "1757:3:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1757:22:56"
                        },
                        "variableNames": [
                          {
                            "name": "exponent",
                            "nodeType": "YulIdentifier",
                            "src": "1745:8:56"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "exponent",
                        "nodeType": "YulIdentifier",
                        "src": "1530:8:56"
                      },
                      {
                        "name": "power_1",
                        "nodeType": "YulIdentifier",
                        "src": "1540:7:56"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1527:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1527:21:56"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "1549:3:56",
                    "statements": []
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "1523:3:56",
                    "statements": []
                  },
                  "src": "1519:270:56"
                }
              ]
            },
            "name": "checked_exp_helper",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "_base",
                "nodeType": "YulTypedName",
                "src": "1401:5:56",
                "type": ""
              },
              {
                "name": "exponent",
                "nodeType": "YulTypedName",
                "src": "1408:8:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "power",
                "nodeType": "YulTypedName",
                "src": "1421:5:56",
                "type": ""
              },
              {
                "name": "base",
                "nodeType": "YulTypedName",
                "src": "1428:4:56",
                "type": ""
              }
            ],
            "src": "1373:422:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1859:747:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1897:52:56",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1911:10:56",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "1920:1:56",
                          "type": "",
                          "value": "1"
                        },
                        "variableNames": [
                          {
                            "name": "power",
                            "nodeType": "YulIdentifier",
                            "src": "1911:5:56"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulLeave",
                        "src": "1934:5:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "exponent",
                        "nodeType": "YulIdentifier",
                        "src": "1879:8:56"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1872:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1872:16:56"
                  },
                  "nodeType": "YulIf",
                  "src": "1869:80:56"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1982:52:56",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1996:10:56",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "2005:1:56",
                          "type": "",
                          "value": "0"
                        },
                        "variableNames": [
                          {
                            "name": "power",
                            "nodeType": "YulIdentifier",
                            "src": "1996:5:56"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulLeave",
                        "src": "2019:5:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "base",
                        "nodeType": "YulIdentifier",
                        "src": "1968:4:56"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1961:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1961:12:56"
                  },
                  "nodeType": "YulIf",
                  "src": "1958:76:56"
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "2070:52:56",
                        "statements": [
                          {
                            "nodeType": "YulAssignment",
                            "src": "2084:10:56",
                            "value": {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2093:1:56",
                              "type": "",
                              "value": "1"
                            },
                            "variableNames": [
                              {
                                "name": "power",
                                "nodeType": "YulIdentifier",
                                "src": "2084:5:56"
                              }
                            ]
                          },
                          {
                            "nodeType": "YulLeave",
                            "src": "2107:5:56"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "2063:59:56",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2068:1:56",
                        "type": "",
                        "value": "1"
                      }
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "2138:123:56",
                        "statements": [
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "2173:22:56",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "panic_error_0x11",
                                      "nodeType": "YulIdentifier",
                                      "src": "2175:16:56"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2175:18:56"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "2175:18:56"
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "exponent",
                                  "nodeType": "YulIdentifier",
                                  "src": "2158:8:56"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2168:3:56",
                                  "type": "",
                                  "value": "255"
                                }
                              ],
                              "functionName": {
                                "name": "gt",
                                "nodeType": "YulIdentifier",
                                "src": "2155:2:56"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2155:17:56"
                            },
                            "nodeType": "YulIf",
                            "src": "2152:43:56"
                          },
                          {
                            "nodeType": "YulAssignment",
                            "src": "2208:25:56",
                            "value": {
                              "arguments": [
                                {
                                  "name": "exponent",
                                  "nodeType": "YulIdentifier",
                                  "src": "2221:8:56"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2231:1:56",
                                  "type": "",
                                  "value": "1"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "2217:3:56"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2217:16:56"
                            },
                            "variableNames": [
                              {
                                "name": "power",
                                "nodeType": "YulIdentifier",
                                "src": "2208:5:56"
                              }
                            ]
                          },
                          {
                            "nodeType": "YulLeave",
                            "src": "2246:5:56"
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "2131:130:56",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2136:1:56",
                        "type": "",
                        "value": "2"
                      }
                    }
                  ],
                  "expression": {
                    "name": "base",
                    "nodeType": "YulIdentifier",
                    "src": "2050:4:56"
                  },
                  "nodeType": "YulSwitch",
                  "src": "2043:218:56"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2359:70:56",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "2373:28:56",
                        "value": {
                          "arguments": [
                            {
                              "name": "base",
                              "nodeType": "YulIdentifier",
                              "src": "2386:4:56"
                            },
                            {
                              "name": "exponent",
                              "nodeType": "YulIdentifier",
                              "src": "2392:8:56"
                            }
                          ],
                          "functionName": {
                            "name": "exp",
                            "nodeType": "YulIdentifier",
                            "src": "2382:3:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2382:19:56"
                        },
                        "variableNames": [
                          {
                            "name": "power",
                            "nodeType": "YulIdentifier",
                            "src": "2373:5:56"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulLeave",
                        "src": "2414:5:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "base",
                                "nodeType": "YulIdentifier",
                                "src": "2283:4:56"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2289:2:56",
                                "type": "",
                                "value": "11"
                              }
                            ],
                            "functionName": {
                              "name": "lt",
                              "nodeType": "YulIdentifier",
                              "src": "2280:2:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2280:12:56"
                          },
                          {
                            "arguments": [
                              {
                                "name": "exponent",
                                "nodeType": "YulIdentifier",
                                "src": "2297:8:56"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2307:2:56",
                                "type": "",
                                "value": "78"
                              }
                            ],
                            "functionName": {
                              "name": "lt",
                              "nodeType": "YulIdentifier",
                              "src": "2294:2:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2294:16:56"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "2276:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2276:35:56"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "base",
                                "nodeType": "YulIdentifier",
                                "src": "2320:4:56"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2326:3:56",
                                "type": "",
                                "value": "307"
                              }
                            ],
                            "functionName": {
                              "name": "lt",
                              "nodeType": "YulIdentifier",
                              "src": "2317:2:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2317:13:56"
                          },
                          {
                            "arguments": [
                              {
                                "name": "exponent",
                                "nodeType": "YulIdentifier",
                                "src": "2335:8:56"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2345:2:56",
                                "type": "",
                                "value": "32"
                              }
                            ],
                            "functionName": {
                              "name": "lt",
                              "nodeType": "YulIdentifier",
                              "src": "2332:2:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2332:16:56"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "2313:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2313:36:56"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "2273:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2273:77:56"
                  },
                  "nodeType": "YulIf",
                  "src": "2270:159:56"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2438:57:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "base",
                        "nodeType": "YulIdentifier",
                        "src": "2480:4:56"
                      },
                      {
                        "name": "exponent",
                        "nodeType": "YulIdentifier",
                        "src": "2486:8:56"
                      }
                    ],
                    "functionName": {
                      "name": "checked_exp_helper",
                      "nodeType": "YulIdentifier",
                      "src": "2461:18:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2461:34:56"
                  },
                  "variables": [
                    {
                      "name": "power_1",
                      "nodeType": "YulTypedName",
                      "src": "2442:7:56",
                      "type": ""
                    },
                    {
                      "name": "base_1",
                      "nodeType": "YulTypedName",
                      "src": "2451:6:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2540:22:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "2542:16:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2542:18:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2542:18:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "power_1",
                        "nodeType": "YulIdentifier",
                        "src": "2510:7:56"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2527:1:56",
                                "type": "",
                                "value": "0"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "2523:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2523:6:56"
                          },
                          {
                            "name": "base_1",
                            "nodeType": "YulIdentifier",
                            "src": "2531:6:56"
                          }
                        ],
                        "functionName": {
                          "name": "div",
                          "nodeType": "YulIdentifier",
                          "src": "2519:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2519:19:56"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2507:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2507:32:56"
                  },
                  "nodeType": "YulIf",
                  "src": "2504:58:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2571:29:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "power_1",
                        "nodeType": "YulIdentifier",
                        "src": "2584:7:56"
                      },
                      {
                        "name": "base_1",
                        "nodeType": "YulIdentifier",
                        "src": "2593:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "mul",
                      "nodeType": "YulIdentifier",
                      "src": "2580:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2580:20:56"
                  },
                  "variableNames": [
                    {
                      "name": "power",
                      "nodeType": "YulIdentifier",
                      "src": "2571:5:56"
                    }
                  ]
                }
              ]
            },
            "name": "checked_exp_unsigned",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base",
                "nodeType": "YulTypedName",
                "src": "1830:4:56",
                "type": ""
              },
              {
                "name": "exponent",
                "nodeType": "YulTypedName",
                "src": "1836:8:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "power",
                "nodeType": "YulTypedName",
                "src": "1849:5:56",
                "type": ""
              }
            ],
            "src": "1800:806:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2681:61:56",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2691:45:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "base",
                        "nodeType": "YulIdentifier",
                        "src": "2721:4:56"
                      },
                      {
                        "name": "exponent",
                        "nodeType": "YulIdentifier",
                        "src": "2727:8:56"
                      }
                    ],
                    "functionName": {
                      "name": "checked_exp_unsigned",
                      "nodeType": "YulIdentifier",
                      "src": "2700:20:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2700:36:56"
                  },
                  "variableNames": [
                    {
                      "name": "power",
                      "nodeType": "YulIdentifier",
                      "src": "2691:5:56"
                    }
                  ]
                }
              ]
            },
            "name": "checked_exp_t_uint256_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base",
                "nodeType": "YulTypedName",
                "src": "2652:4:56",
                "type": ""
              },
              {
                "name": "exponent",
                "nodeType": "YulTypedName",
                "src": "2658:8:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "power",
                "nodeType": "YulTypedName",
                "src": "2671:5:56",
                "type": ""
              }
            ],
            "src": "2611:131:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2806:120:56",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2816:22:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2831:6:56"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "2825:5:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2825:13:56"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "2816:5:56"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2904:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2913:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2916:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2906:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2906:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2906:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "2860:5:56"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2871:5:56"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2878:22:56",
                                "type": "",
                                "value": "0xffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "2867:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2867:34:56"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "2857:2:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2857:45:56"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "2850:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2850:53:56"
                  },
                  "nodeType": "YulIf",
                  "src": "2847:73:56"
                }
              ]
            },
            "name": "abi_decode_uint80_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "2785:6:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "2796:5:56",
                "type": ""
              }
            ],
            "src": "2747:179:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3077:327:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3124:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3133:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3136:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3126:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3126:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3126:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3098:7:56"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3107:9:56"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3094:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3094:23:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3119:3:56",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3090:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3090:33:56"
                  },
                  "nodeType": "YulIf",
                  "src": "3087:53:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3149:49:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3188:9:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint80_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "3159:28:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3159:39:56"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3149:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3207:35:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3227:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3238:2:56",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3223:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3223:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "3217:5:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3217:25:56"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "3207:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3251:35:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3271:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3282:2:56",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3267:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3267:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "3261:5:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3261:25:56"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "3251:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3295:35:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3315:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3326:2:56",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3311:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3311:18:56"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "3305:5:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3305:25:56"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "3295:6:56"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3339:59:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3382:9:56"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3393:3:56",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3378:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3378:19:56"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint80_fromMemory",
                      "nodeType": "YulIdentifier",
                      "src": "3349:28:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3349:49:56"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "3339:6:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint80t_int256t_uint256t_uint256t_uint80_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3011:9:56",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3022:7:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3034:6:56",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3042:6:56",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "3050:6:56",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "3058:6:56",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "3066:6:56",
                "type": ""
              }
            ],
            "src": "2931:473:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3488:168:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3534:16:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3543:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3546:1:56",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3536:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3536:12:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3536:12:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3509:7:56"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3518:9:56"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3505:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3505:23:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3530:2:56",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3501:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3501:32:56"
                  },
                  "nodeType": "YulIf",
                  "src": "3498:52:56"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3559:29:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3578:9:56"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "3572:5:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3572:16:56"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "3563:5:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "3620:5:56"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_uint8",
                      "nodeType": "YulIdentifier",
                      "src": "3597:22:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3597:29:56"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3597:29:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3635:15:56",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "3645:5:56"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3635:6:56"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint8_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3454:9:56",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3465:7:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3477:6:56",
                "type": ""
              }
            ],
            "src": "3409:247:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3712:502:56",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3722:29:56",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3740:3:56",
                            "type": "",
                            "value": "255"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3745:1:56",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "3736:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3736:11:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3749:1:56",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "3732:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3732:19:56"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "3726:2:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3760:19:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "3774:1:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3777:1:56",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "sgt",
                      "nodeType": "YulIdentifier",
                      "src": "3770:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3770:9:56"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "3764:2:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3788:19:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "3802:1:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3805:1:56",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "sgt",
                      "nodeType": "YulIdentifier",
                      "src": "3798:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3798:9:56"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "3792:2:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3855:22:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "3857:16:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3857:18:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3857:18:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "3827:2:56"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "3831:2:56"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "3823:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3823:11:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "x",
                            "nodeType": "YulIdentifier",
                            "src": "3839:1:56"
                          },
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "3846:2:56"
                              },
                              {
                                "name": "y",
                                "nodeType": "YulIdentifier",
                                "src": "3850:1:56"
                              }
                            ],
                            "functionName": {
                              "name": "div",
                              "nodeType": "YulIdentifier",
                              "src": "3842:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3842:10:56"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "3836:2:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3836:17:56"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "3819:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3819:35:56"
                  },
                  "nodeType": "YulIf",
                  "src": "3816:61:56"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3886:21:56",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3900:3:56",
                        "type": "",
                        "value": "255"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3905:1:56",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "shl",
                      "nodeType": "YulIdentifier",
                      "src": "3896:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3896:11:56"
                  },
                  "variables": [
                    {
                      "name": "_4",
                      "nodeType": "YulTypedName",
                      "src": "3890:2:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3916:19:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "3930:1:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3933:1:56",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3926:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3926:9:56"
                  },
                  "variables": [
                    {
                      "name": "_5",
                      "nodeType": "YulTypedName",
                      "src": "3920:2:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3985:22:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "3987:16:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3987:18:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3987:18:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "3955:2:56"
                          },
                          {
                            "name": "_5",
                            "nodeType": "YulIdentifier",
                            "src": "3959:2:56"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "3951:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3951:11:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "y",
                            "nodeType": "YulIdentifier",
                            "src": "3968:1:56"
                          },
                          {
                            "arguments": [
                              {
                                "name": "_4",
                                "nodeType": "YulIdentifier",
                                "src": "3976:2:56"
                              },
                              {
                                "name": "x",
                                "nodeType": "YulIdentifier",
                                "src": "3980:1:56"
                              }
                            ],
                            "functionName": {
                              "name": "sdiv",
                              "nodeType": "YulIdentifier",
                              "src": "3971:4:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3971:11:56"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "3964:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3964:19:56"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "3947:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3947:37:56"
                  },
                  "nodeType": "YulIf",
                  "src": "3944:63:56"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4016:19:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "4030:1:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4033:1:56",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4026:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4026:9:56"
                  },
                  "variables": [
                    {
                      "name": "_6",
                      "nodeType": "YulTypedName",
                      "src": "4020:2:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4085:22:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "4087:16:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4087:18:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4087:18:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_6",
                            "nodeType": "YulIdentifier",
                            "src": "4055:2:56"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "4059:2:56"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "4051:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4051:11:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "x",
                            "nodeType": "YulIdentifier",
                            "src": "4068:1:56"
                          },
                          {
                            "arguments": [
                              {
                                "name": "_4",
                                "nodeType": "YulIdentifier",
                                "src": "4076:2:56"
                              },
                              {
                                "name": "y",
                                "nodeType": "YulIdentifier",
                                "src": "4080:1:56"
                              }
                            ],
                            "functionName": {
                              "name": "sdiv",
                              "nodeType": "YulIdentifier",
                              "src": "4071:4:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4071:11:56"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "4064:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4064:19:56"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "4047:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4047:37:56"
                  },
                  "nodeType": "YulIf",
                  "src": "4044:63:56"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4157:22:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "4159:16:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4159:18:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4159:18:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "_6",
                            "nodeType": "YulIdentifier",
                            "src": "4127:2:56"
                          },
                          {
                            "name": "_5",
                            "nodeType": "YulIdentifier",
                            "src": "4131:2:56"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "4123:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4123:11:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "x",
                            "nodeType": "YulIdentifier",
                            "src": "4140:1:56"
                          },
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "4148:2:56"
                              },
                              {
                                "name": "y",
                                "nodeType": "YulIdentifier",
                                "src": "4152:1:56"
                              }
                            ],
                            "functionName": {
                              "name": "sdiv",
                              "nodeType": "YulIdentifier",
                              "src": "4143:4:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4143:11:56"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "4136:3:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4136:19:56"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "4119:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4119:37:56"
                  },
                  "nodeType": "YulIf",
                  "src": "4116:63:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4188:20:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "4203:1:56"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "4206:1:56"
                      }
                    ],
                    "functionName": {
                      "name": "mul",
                      "nodeType": "YulIdentifier",
                      "src": "4199:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4199:9:56"
                  },
                  "variableNames": [
                    {
                      "name": "product",
                      "nodeType": "YulIdentifier",
                      "src": "4188:7:56"
                    }
                  ]
                }
              ]
            },
            "name": "checked_mul_t_int256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "3691:1:56",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "3694:1:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "product",
                "nodeType": "YulTypedName",
                "src": "3700:7:56",
                "type": ""
              }
            ],
            "src": "3661:553:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4264:245:56",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4295:111:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4316:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "4323:3:56",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "4328:10:56",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "4319:3:56"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "4319:20:56"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "4309:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4309:31:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4309:31:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4360:1:56",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4363:4:56",
                              "type": "",
                              "value": "0x12"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "4353:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4353:15:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4353:15:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4388:1:56",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4391:4:56",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4381:6:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4381:15:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4381:15:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "4284:1:56"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "4277:6:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4277:9:56"
                  },
                  "nodeType": "YulIf",
                  "src": "4274:132:56"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4457:22:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "4459:16:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4459:18:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4459:18:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "x",
                            "nodeType": "YulIdentifier",
                            "src": "4425:1:56"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4432:3:56",
                                "type": "",
                                "value": "255"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4437:1:56",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "4428:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4428:11:56"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "4422:2:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4422:18:56"
                      },
                      {
                        "arguments": [
                          {
                            "name": "y",
                            "nodeType": "YulIdentifier",
                            "src": "4445:1:56"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4452:1:56",
                                "type": "",
                                "value": "0"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "4448:3:56"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4448:6:56"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "4442:2:56"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4442:13:56"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "4418:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4418:38:56"
                  },
                  "nodeType": "YulIf",
                  "src": "4415:64:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4488:15:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "4498:1:56"
                      },
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "4501:1:56"
                      }
                    ],
                    "functionName": {
                      "name": "sdiv",
                      "nodeType": "YulIdentifier",
                      "src": "4493:4:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4493:10:56"
                  },
                  "variableNames": [
                    {
                      "name": "r",
                      "nodeType": "YulIdentifier",
                      "src": "4488:1:56"
                    }
                  ]
                }
              ]
            },
            "name": "checked_div_t_int256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "4249:1:56",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "4252:1:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "r",
                "nodeType": "YulTypedName",
                "src": "4258:1:56",
                "type": ""
              }
            ],
            "src": "4219:290:56"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4561:148:56",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4571:23:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nodeType": "YulIdentifier",
                        "src": "4586:1:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4589:4:56",
                        "type": "",
                        "value": "0xff"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "4582:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4582:12:56"
                  },
                  "variables": [
                    {
                      "name": "x_1",
                      "nodeType": "YulTypedName",
                      "src": "4575:3:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4603:23:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "y",
                        "nodeType": "YulIdentifier",
                        "src": "4618:1:56"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4621:4:56",
                        "type": "",
                        "value": "0xff"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "4614:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4614:12:56"
                  },
                  "variables": [
                    {
                      "name": "y_1",
                      "nodeType": "YulTypedName",
                      "src": "4607:3:56",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4651:22:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nodeType": "YulIdentifier",
                            "src": "4653:16:56"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4653:18:56"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4653:18:56"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x_1",
                        "nodeType": "YulIdentifier",
                        "src": "4641:3:56"
                      },
                      {
                        "name": "y_1",
                        "nodeType": "YulIdentifier",
                        "src": "4646:3:56"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "4638:2:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4638:12:56"
                  },
                  "nodeType": "YulIf",
                  "src": "4635:38:56"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4682:21:56",
                  "value": {
                    "arguments": [
                      {
                        "name": "x_1",
                        "nodeType": "YulIdentifier",
                        "src": "4694:3:56"
                      },
                      {
                        "name": "y_1",
                        "nodeType": "YulIdentifier",
                        "src": "4699:3:56"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nodeType": "YulIdentifier",
                      "src": "4690:3:56"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4690:13:56"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nodeType": "YulIdentifier",
                      "src": "4682:4:56"
                    }
                  ]
                }
              ]
            },
            "name": "checked_sub_t_uint8",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nodeType": "YulTypedName",
                "src": "4543:1:56",
                "type": ""
              },
              {
                "name": "y",
                "nodeType": "YulTypedName",
                "src": "4546:1:56",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nodeType": "YulTypedName",
                "src": "4552:4:56",
                "type": ""
              }
            ],
            "src": "4514:195:56"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function validator_revert_uint8(value)\n    {\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint8(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        let value := calldataload(add(headStart, 64))\n        validator_revert_uint8(value)\n        value2 := value\n    }\n    function abi_encode_tuple_t_int256__to_t_int256__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_stringliteral_6f86eb67bd648d27ce4a2d90e695fc1ea799c79d8ef356679c0180998e1c1453__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Invalid _decimals\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_exp_helper(_base, exponent) -> power, base\n    {\n        let power_1 := 1\n        power := power_1\n        base := _base\n        for { } gt(exponent, power_1) { }\n        {\n            if gt(base, div(not(0), base)) { panic_error_0x11() }\n            if and(exponent, power_1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(power_1, exponent)\n        }\n    }\n    function checked_exp_unsigned(base, exponent) -> power\n    {\n        if iszero(exponent)\n        {\n            power := 1\n            leave\n        }\n        if iszero(base)\n        {\n            power := 0\n            leave\n        }\n        switch base\n        case 1 {\n            power := 1\n            leave\n        }\n        case 2 {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := shl(exponent, 1)\n            leave\n        }\n        if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n        {\n            power := exp(base, exponent)\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent)\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_exp_t_uint256_t_uint256(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, exponent)\n    }\n    function abi_decode_uint80_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint80t_int256t_uint256t_uint256t_uint80_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_uint80_fromMemory(headStart)\n        value1 := mload(add(headStart, 32))\n        value2 := mload(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n        value4 := abi_decode_uint80_fromMemory(add(headStart, 128))\n    }\n    function abi_decode_tuple_t_uint8_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_uint8(value)\n        value0 := value\n    }\n    function checked_mul_t_int256(x, y) -> product\n    {\n        let _1 := sub(shl(255, 1), 1)\n        let _2 := sgt(y, 0)\n        let _3 := sgt(x, 0)\n        if and(and(_3, _2), gt(x, div(_1, y))) { panic_error_0x11() }\n        let _4 := shl(255, 1)\n        let _5 := slt(y, 0)\n        if and(and(_3, _5), slt(y, sdiv(_4, x))) { panic_error_0x11() }\n        let _6 := slt(x, 0)\n        if and(and(_6, _2), slt(x, sdiv(_4, y))) { panic_error_0x11() }\n        if and(and(_6, _5), slt(x, sdiv(_1, y))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_div_t_int256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        if and(eq(x, shl(255, 1)), eq(y, not(0))) { panic_error_0x11() }\n        r := sdiv(x, y)\n    }\n    function checked_sub_t_uint8(x, y) -> diff\n    {\n        let x_1 := and(x, 0xff)\n        let y_1 := and(y, 0xff)\n        if lt(x_1, y_1) { panic_error_0x11() }\n        diff := sub(x_1, y_1)\n    }\n}",
      "id": 56,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "142:1307:45:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;142:1307:45;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "142:1307:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;171:850;;;;;;:::i;:::-;;:::i;:::-;;;859:25:56;;;847:2;832:18;171:850:45;;;;;;;;295:6;334:20;;;;;;;:46;;-1:-1:-1;377:2:45;358:22;;;;;334:46;313:110;;;;-1:-1:-1;;;313:110:45;;1097:2:56;313:110:45;;;1079:21:56;1136:2;1116:18;;;1109:30;-1:-1:-1;;;1155:18:56;;;1148:47;1212:18;;313:110:45;;;;;;;;433:15;458:22;462:18;;;458:2;:22;:::i;:::-;433:48;;494:16;542:5;-1:-1:-1;;;;;520:57:45;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;491:88;;;;;;589:18;632:5;-1:-1:-1;;;;;610:37:45;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;589:60;;671:46;682:9;693:12;707:9;671:10;:46::i;:::-;659:58;;731:17;780:6;-1:-1:-1;;;;;758:58:45;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;728:90;;;;;;828:19;872:6;-1:-1:-1;;;;;850:38:45;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;828:62;;913:48;924:10;936:13;951:9;913:10;:48::i;:::-;900:61;-1:-1:-1;900:61:45;980:20;992:8;980:9;:20;:::i;:::-;979:35;;;;:::i;:::-;972:42;;;;;;;171:850;;;;;;:::o;1027:420::-;1154:6;1193:9;1176:26;;:14;:26;;;1172:246;;;1253:26;1265:14;1253:9;:26;:::i;:::-;1241:39;;1245:35;;1241:2;:39;:::i;:::-;1225:56;;:6;:56;:::i;:::-;1218:63;;;;1172:246;1319:9;1302:26;;:14;:26;;;1298:120;;;1379:26;1396:9;1379:14;:26;:::i;:::-;1367:39;;1371:35;;1367:2;:39;:::i;:::-;1351:56;;:6;:56;:::i;1298:120::-;-1:-1:-1;1434:6:45;;1027:420;-1:-1:-1;;1027:420:45:o;14:173:56:-;82:20;;-1:-1:-1;;;;;131:31:56;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:114::-;276:4;269:5;265:16;258:5;255:27;245:55;;296:1;293;286:12;245:55;192:114;:::o;311:391::-;386:6;394;402;455:2;443:9;434:7;430:23;426:32;423:52;;;471:1;468;461:12;423:52;494:29;513:9;494:29;:::i;:::-;484:39;;542:38;576:2;565:9;561:18;542:38;:::i;:::-;532:48;;630:2;619:9;615:18;602:32;643:29;666:5;643:29;:::i;:::-;691:5;681:15;;;311:391;;;;;:::o;1241:127::-;1302:10;1297:3;1293:20;1290:1;1283:31;1333:4;1330:1;1323:15;1357:4;1354:1;1347:15;1373:422;1462:1;1505:5;1462:1;1519:270;1540:7;1530:8;1527:21;1519:270;;;1599:4;1595:1;1591:6;1587:17;1581:4;1578:27;1575:53;;;1608:18;;:::i;:::-;1658:7;1648:8;1644:22;1641:55;;;1678:16;;;;1641:55;1757:22;;;;1717:15;;;;1519:270;;;1523:3;1373:422;;;;;:::o;1800:806::-;1849:5;1879:8;1869:80;;-1:-1:-1;1920:1:56;1934:5;;1869:80;1968:4;1958:76;;-1:-1:-1;2005:1:56;2019:5;;1958:76;2050:4;2068:1;2063:59;;;;2136:1;2131:130;;;;2043:218;;2063:59;2093:1;2084:10;;2107:5;;;2131:130;2168:3;2158:8;2155:17;2152:43;;;2175:18;;:::i;:::-;-1:-1:-1;;2231:1:56;2217:16;;2246:5;;2043:218;;2345:2;2335:8;2332:16;2326:3;2320:4;2317:13;2313:36;2307:2;2297:8;2294:16;2289:2;2283:4;2280:12;2276:35;2273:77;2270:159;;;-1:-1:-1;2382:19:56;;;2414:5;;2270:159;2461:34;2486:8;2480:4;2461:34;:::i;:::-;2531:6;2527:1;2523:6;2519:19;2510:7;2507:32;2504:58;;;2542:18;;:::i;:::-;2580:20;;-1:-1:-1;1800:806:56;;;;;:::o;2611:131::-;2671:5;2700:36;2727:8;2721:4;2700:36;:::i;2747:179::-;2825:13;;2878:22;2867:34;;2857:45;;2847:73;;2916:1;2913;2906:12;2931:473;3034:6;3042;3050;3058;3066;3119:3;3107:9;3098:7;3094:23;3090:33;3087:53;;;3136:1;3133;3126:12;3087:53;3159:39;3188:9;3159:39;:::i;:::-;3149:49;;3238:2;3227:9;3223:18;3217:25;3207:35;;3282:2;3271:9;3267:18;3261:25;3251:35;;3326:2;3315:9;3311:18;3305:25;3295:35;;3349:49;3393:3;3382:9;3378:19;3349:49;:::i;:::-;3339:59;;2931:473;;;;;;;;:::o;3409:247::-;3477:6;3530:2;3518:9;3509:7;3505:23;3501:32;3498:52;;;3546:1;3543;3536:12;3498:52;3578:9;3572:16;3597:29;3620:5;3597:29;:::i;3661:553::-;3700:7;-1:-1:-1;;;;;3770:9:56;;;3798;;;3823:11;;;3842:10;;;3836:17;;3819:35;3816:61;;;3857:18;;:::i;:::-;-1:-1:-1;;;3933:1:56;3926:9;;3951:11;;;3971;;;3964:19;;3947:37;3944:63;;;3987:18;;:::i;:::-;4033:1;4030;4026:9;4016:19;;4080:1;4076:2;4071:11;4068:1;4064:19;4059:2;4055;4051:11;4047:37;4044:63;;;4087:18;;:::i;:::-;4152:1;4148:2;4143:11;4140:1;4136:19;4131:2;4127;4123:11;4119:37;4116:63;;;4159:18;;:::i;:::-;-1:-1:-1;;;4199:9:56;;;;;3661:553;-1:-1:-1;;;3661:553:56:o;4219:290::-;4258:1;4284;4274:132;;4328:10;4323:3;4319:20;4316:1;4309:31;4363:4;4360:1;4353:15;4391:4;4388:1;4381:15;4274:132;-1:-1:-1;;;4422:18:56;;-1:-1:-1;;4442:13:56;;4418:38;4415:64;;;4459:18;;:::i;:::-;-1:-1:-1;4493:10:56;;4219:290::o;4514:195::-;4552:4;4589;4586:1;4582:12;4621:4;4618:1;4614:12;4646:3;4641;4638:12;4635:38;;;4653:18;;:::i;:::-;4690:13;;;4514:195;-1:-1:-1;;;4514:195:56:o",
  "source": "// SPDX-License-Identifier: AGPL-3.0\n\npragma solidity ^0.8.11;\n\nimport \"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\";\n\nlibrary PriceConverter {\n    function getDerivedPrice(\n        address _base,\n        address _quote,\n        uint8 _decimals\n    ) public view returns (int256) {\n        require(\n            _decimals > uint8(0) && _decimals <= uint8(18),\n            \"Invalid _decimals\"\n        );\n        int256 decimals = int256(10**uint256(_decimals));\n        (, int256 basePrice, , , ) = AggregatorV3Interface(_base)\n            .latestRoundData();\n        uint8 baseDecimals = AggregatorV3Interface(_base).decimals();\n        basePrice = scalePrice(basePrice, baseDecimals, _decimals);\n\n        (, int256 quotePrice, , , ) = AggregatorV3Interface(_quote)\n            .latestRoundData();\n        uint8 quoteDecimals = AggregatorV3Interface(_quote).decimals();\n        quotePrice = scalePrice(quotePrice, quoteDecimals, _decimals);\n\n        return (basePrice * decimals) / quotePrice;\n    }\n\n    function scalePrice(\n        int256 _price,\n        uint8 _priceDecimals,\n        uint8 _decimals\n    ) internal pure returns (int256) {\n        if (_priceDecimals < _decimals) {\n            return _price * int256(10**uint256(_decimals - _priceDecimals));\n        } else if (_priceDecimals > _decimals) {\n            return _price / int256(10**uint256(_priceDecimals - _decimals));\n        }\n        return _price;\n    }\n}\n",
  "sourcePath": "/Users/yosephks/Documents/GitHub/alpsfinance-smart-contracts/contracts/libraries/PriceConverter.sol",
  "ast": {
    "absolutePath": "project:/contracts/libraries/PriceConverter.sol",
    "exportedSymbols": {
      "AggregatorV3Interface": [
        45
      ],
      "PriceConverter": [
        7631
      ]
    },
    "id": 7632,
    "license": "AGPL-3.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7481,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "38:24:45"
      },
      {
        "absolutePath": "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol",
        "file": "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol",
        "id": 7482,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 7632,
        "sourceUnit": 46,
        "src": "64:76:45",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "PriceConverter",
        "contractDependencies": [],
        "contractKind": "library",
        "fullyImplemented": true,
        "id": 7631,
        "linearizedBaseContracts": [
          7631
        ],
        "name": "PriceConverter",
        "nameLocation": "150:14:45",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 7577,
              "nodeType": "Block",
              "src": "303:718:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7506,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 7499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7494,
                            "name": "_decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7488,
                            "src": "334:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 7497,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "352:1:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 7496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "346:5:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 7495,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "346:5:45",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 7498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "346:8:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "334:20:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 7505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7500,
                            "name": "_decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7488,
                            "src": "358:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "3138",
                                "id": 7503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "377:2:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_18_by_1",
                                  "typeString": "int_const 18"
                                },
                                "value": "18"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_18_by_1",
                                  "typeString": "int_const 18"
                                }
                              ],
                              "id": 7502,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "371:5:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 7501,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "371:5:45",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 7504,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "371:9:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "358:22:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "334:46:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e76616c6964205f646563696d616c73",
                        "id": 7507,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "394:19:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6f86eb67bd648d27ce4a2d90e695fc1ea799c79d8ef356679c0180998e1c1453",
                          "typeString": "literal_string \"Invalid _decimals\""
                        },
                        "value": "Invalid _decimals"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6f86eb67bd648d27ce4a2d90e695fc1ea799c79d8ef356679c0180998e1c1453",
                          "typeString": "literal_string \"Invalid _decimals\""
                        }
                      ],
                      "id": 7493,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "313:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "313:110:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7509,
                  "nodeType": "ExpressionStatement",
                  "src": "313:110:45"
                },
                {
                  "assignments": [
                    7511
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7511,
                      "mutability": "mutable",
                      "name": "decimals",
                      "nameLocation": "440:8:45",
                      "nodeType": "VariableDeclaration",
                      "scope": 7577,
                      "src": "433:15:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 7510,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "433:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7521,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "3130",
                          "id": 7514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "458:2:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10_by_1",
                            "typeString": "int_const 10"
                          },
                          "value": "10"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 7517,
                              "name": "_decimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7488,
                              "src": "470:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 7516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "462:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 7515,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "462:7:45",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 7518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "462:18:45",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "458:22:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7513,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "451:6:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int256_$",
                        "typeString": "type(int256)"
                      },
                      "typeName": {
                        "id": 7512,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "451:6:45",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 7520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "451:30:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "433:48:45"
                },
                {
                  "assignments": [
                    null,
                    7523,
                    null,
                    null,
                    null
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 7523,
                      "mutability": "mutable",
                      "name": "basePrice",
                      "nameLocation": "501:9:45",
                      "nodeType": "VariableDeclaration",
                      "scope": 7577,
                      "src": "494:16:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 7522,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "494:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    },
                    null,
                    null,
                    null
                  ],
                  "id": 7529,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "arguments": [
                          {
                            "id": 7525,
                            "name": "_base",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7484,
                            "src": "542:5:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 7524,
                          "name": "AggregatorV3Interface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 45,
                          "src": "520:21:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_AggregatorV3Interface_$45_$",
                            "typeString": "type(contract AggregatorV3Interface)"
                          }
                        },
                        "id": 7526,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "520:28:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AggregatorV3Interface_$45",
                          "typeString": "contract AggregatorV3Interface"
                        }
                      },
                      "id": 7527,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "latestRoundData",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 44,
                      "src": "520:57:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$",
                        "typeString": "function () view external returns (uint80,int256,uint256,uint256,uint80)"
                      }
                    },
                    "id": 7528,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "520:59:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$",
                      "typeString": "tuple(uint80,int256,uint256,uint256,uint80)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "491:88:45"
                },
                {
                  "assignments": [
                    7531
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7531,
                      "mutability": "mutable",
                      "name": "baseDecimals",
                      "nameLocation": "595:12:45",
                      "nodeType": "VariableDeclaration",
                      "scope": 7577,
                      "src": "589:18:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 7530,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "589:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7537,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "arguments": [
                          {
                            "id": 7533,
                            "name": "_base",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7484,
                            "src": "632:5:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 7532,
                          "name": "AggregatorV3Interface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 45,
                          "src": "610:21:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_AggregatorV3Interface_$45_$",
                            "typeString": "type(contract AggregatorV3Interface)"
                          }
                        },
                        "id": 7534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "610:28:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AggregatorV3Interface_$45",
                          "typeString": "contract AggregatorV3Interface"
                        }
                      },
                      "id": 7535,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decimals",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6,
                      "src": "610:37:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                        "typeString": "function () view external returns (uint8)"
                      }
                    },
                    "id": 7536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "610:39:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "589:60:45"
                },
                {
                  "expression": {
                    "id": 7544,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 7538,
                      "name": "basePrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7523,
                      "src": "659:9:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 7540,
                          "name": "basePrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7523,
                          "src": "682:9:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        {
                          "id": 7541,
                          "name": "baseDecimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7531,
                          "src": "693:12:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        {
                          "id": 7542,
                          "name": "_decimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7488,
                          "src": "707:9:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "id": 7539,
                        "name": "scalePrice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7630,
                        "src": "671:10:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_uint8_$_t_uint8_$returns$_t_int256_$",
                          "typeString": "function (int256,uint8,uint8) pure returns (int256)"
                        }
                      },
                      "id": 7543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "671:46:45",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "659:58:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 7545,
                  "nodeType": "ExpressionStatement",
                  "src": "659:58:45"
                },
                {
                  "assignments": [
                    null,
                    7547,
                    null,
                    null,
                    null
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 7547,
                      "mutability": "mutable",
                      "name": "quotePrice",
                      "nameLocation": "738:10:45",
                      "nodeType": "VariableDeclaration",
                      "scope": 7577,
                      "src": "731:17:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 7546,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "731:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    },
                    null,
                    null,
                    null
                  ],
                  "id": 7553,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "arguments": [
                          {
                            "id": 7549,
                            "name": "_quote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7486,
                            "src": "780:6:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 7548,
                          "name": "AggregatorV3Interface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 45,
                          "src": "758:21:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_AggregatorV3Interface_$45_$",
                            "typeString": "type(contract AggregatorV3Interface)"
                          }
                        },
                        "id": 7550,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "758:29:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AggregatorV3Interface_$45",
                          "typeString": "contract AggregatorV3Interface"
                        }
                      },
                      "id": 7551,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "latestRoundData",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 44,
                      "src": "758:58:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$",
                        "typeString": "function () view external returns (uint80,int256,uint256,uint256,uint80)"
                      }
                    },
                    "id": 7552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "758:60:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$",
                      "typeString": "tuple(uint80,int256,uint256,uint256,uint80)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "728:90:45"
                },
                {
                  "assignments": [
                    7555
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7555,
                      "mutability": "mutable",
                      "name": "quoteDecimals",
                      "nameLocation": "834:13:45",
                      "nodeType": "VariableDeclaration",
                      "scope": 7577,
                      "src": "828:19:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 7554,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "828:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7561,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "arguments": [
                          {
                            "id": 7557,
                            "name": "_quote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7486,
                            "src": "872:6:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 7556,
                          "name": "AggregatorV3Interface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 45,
                          "src": "850:21:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_AggregatorV3Interface_$45_$",
                            "typeString": "type(contract AggregatorV3Interface)"
                          }
                        },
                        "id": 7558,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "850:29:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AggregatorV3Interface_$45",
                          "typeString": "contract AggregatorV3Interface"
                        }
                      },
                      "id": 7559,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decimals",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6,
                      "src": "850:38:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                        "typeString": "function () view external returns (uint8)"
                      }
                    },
                    "id": 7560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "850:40:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "828:62:45"
                },
                {
                  "expression": {
                    "id": 7568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 7562,
                      "name": "quotePrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7547,
                      "src": "900:10:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 7564,
                          "name": "quotePrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7547,
                          "src": "924:10:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        {
                          "id": 7565,
                          "name": "quoteDecimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7555,
                          "src": "936:13:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        {
                          "id": 7566,
                          "name": "_decimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7488,
                          "src": "951:9:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "id": 7563,
                        "name": "scalePrice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7630,
                        "src": "913:10:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_uint8_$_t_uint8_$returns$_t_int256_$",
                          "typeString": "function (int256,uint8,uint8) pure returns (int256)"
                        }
                      },
                      "id": 7567,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "913:48:45",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "900:61:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 7569,
                  "nodeType": "ExpressionStatement",
                  "src": "900:61:45"
                },
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 7575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 7572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7570,
                            "name": "basePrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7523,
                            "src": "980:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 7571,
                            "name": "decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7511,
                            "src": "992:8:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "980:20:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "id": 7573,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "979:22:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "id": 7574,
                      "name": "quotePrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7547,
                      "src": "1004:10:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "979:35:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 7492,
                  "id": 7576,
                  "nodeType": "Return",
                  "src": "972:42:45"
                }
              ]
            },
            "functionSelector": "97436655",
            "id": 7578,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDerivedPrice",
            "nameLocation": "180:15:45",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7489,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7484,
                  "mutability": "mutable",
                  "name": "_base",
                  "nameLocation": "213:5:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 7578,
                  "src": "205:13:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7483,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "205:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7486,
                  "mutability": "mutable",
                  "name": "_quote",
                  "nameLocation": "236:6:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 7578,
                  "src": "228:14:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7485,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "228:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7488,
                  "mutability": "mutable",
                  "name": "_decimals",
                  "nameLocation": "258:9:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 7578,
                  "src": "252:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 7487,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "252:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "195:78:45"
            },
            "returnParameters": {
              "id": 7492,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7491,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7578,
                  "src": "295:6:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 7490,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "295:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "294:8:45"
            },
            "scope": 7631,
            "src": "171:850:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7629,
              "nodeType": "Block",
              "src": "1162:285:45",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 7591,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 7589,
                      "name": "_priceDecimals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7582,
                      "src": "1176:14:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 7590,
                      "name": "_decimals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7584,
                      "src": "1193:9:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "1176:26:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "id": 7609,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 7607,
                        "name": "_priceDecimals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7582,
                        "src": "1302:14:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 7608,
                        "name": "_decimals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7584,
                        "src": "1319:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "src": "1302:26:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 7625,
                    "nodeType": "IfStatement",
                    "src": "1298:120:45",
                    "trueBody": {
                      "id": 7624,
                      "nodeType": "Block",
                      "src": "1330:88:45",
                      "statements": [
                        {
                          "expression": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 7622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7610,
                              "name": "_price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7580,
                              "src": "1351:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7620,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "3130",
                                    "id": 7613,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1367:2:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        "id": 7618,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7616,
                                          "name": "_priceDecimals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7582,
                                          "src": "1379:14:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 7617,
                                          "name": "_decimals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7584,
                                          "src": "1396:9:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "src": "1379:26:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "id": 7615,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1371:7:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 7614,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1371:7:45",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 7619,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1371:35:45",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1367:39:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 7612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1360:6:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int256_$",
                                  "typeString": "type(int256)"
                                },
                                "typeName": {
                                  "id": 7611,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1360:6:45",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 7621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1360:47:45",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "1351:56:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "functionReturnParameters": 7588,
                          "id": 7623,
                          "nodeType": "Return",
                          "src": "1344:63:45"
                        }
                      ]
                    }
                  },
                  "id": 7626,
                  "nodeType": "IfStatement",
                  "src": "1172:246:45",
                  "trueBody": {
                    "id": 7606,
                    "nodeType": "Block",
                    "src": "1204:88:45",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 7604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7592,
                            "name": "_price",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7580,
                            "src": "1225:6:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7602,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 7595,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1241:2:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "id": 7600,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7598,
                                        "name": "_decimals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7584,
                                        "src": "1253:9:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 7599,
                                        "name": "_priceDecimals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7582,
                                        "src": "1265:14:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "src": "1253:26:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    ],
                                    "id": 7597,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1245:7:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 7596,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1245:7:45",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 7601,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1245:35:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1241:39:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1234:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 7593,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1234:6:45",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 7603,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1234:47:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "1225:56:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 7588,
                        "id": 7605,
                        "nodeType": "Return",
                        "src": "1218:63:45"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 7627,
                    "name": "_price",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7580,
                    "src": "1434:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 7588,
                  "id": 7628,
                  "nodeType": "Return",
                  "src": "1427:13:45"
                }
              ]
            },
            "id": 7630,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "scalePrice",
            "nameLocation": "1036:10:45",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7585,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7580,
                  "mutability": "mutable",
                  "name": "_price",
                  "nameLocation": "1063:6:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 7630,
                  "src": "1056:13:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 7579,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1056:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7582,
                  "mutability": "mutable",
                  "name": "_priceDecimals",
                  "nameLocation": "1085:14:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 7630,
                  "src": "1079:20:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 7581,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1079:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7584,
                  "mutability": "mutable",
                  "name": "_decimals",
                  "nameLocation": "1115:9:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 7630,
                  "src": "1109:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 7583,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1109:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1046:84:45"
            },
            "returnParameters": {
              "id": 7588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7587,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7630,
                  "src": "1154:6:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 7586,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1154:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1153:8:45"
            },
            "scope": 7631,
            "src": "1027:420:45",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 7632,
        "src": "142:1307:45",
        "usedErrors": []
      }
    ],
    "src": "38:1412:45"
  },
  "legacyAST": {
    "absolutePath": "project:/contracts/libraries/PriceConverter.sol",
    "exportedSymbols": {
      "AggregatorV3Interface": [
        45
      ],
      "PriceConverter": [
        7631
      ]
    },
    "id": 7632,
    "license": "AGPL-3.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7481,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "38:24:45"
      },
      {
        "absolutePath": "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol",
        "file": "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol",
        "id": 7482,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 7632,
        "sourceUnit": 46,
        "src": "64:76:45",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "PriceConverter",
        "contractDependencies": [],
        "contractKind": "library",
        "fullyImplemented": true,
        "id": 7631,
        "linearizedBaseContracts": [
          7631
        ],
        "name": "PriceConverter",
        "nameLocation": "150:14:45",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 7577,
              "nodeType": "Block",
              "src": "303:718:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7506,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 7499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7494,
                            "name": "_decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7488,
                            "src": "334:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 7497,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "352:1:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 7496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "346:5:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 7495,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "346:5:45",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 7498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "346:8:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "334:20:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 7505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7500,
                            "name": "_decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7488,
                            "src": "358:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "3138",
                                "id": 7503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "377:2:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_18_by_1",
                                  "typeString": "int_const 18"
                                },
                                "value": "18"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_18_by_1",
                                  "typeString": "int_const 18"
                                }
                              ],
                              "id": 7502,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "371:5:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 7501,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "371:5:45",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 7504,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "371:9:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "358:22:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "334:46:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e76616c6964205f646563696d616c73",
                        "id": 7507,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "394:19:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6f86eb67bd648d27ce4a2d90e695fc1ea799c79d8ef356679c0180998e1c1453",
                          "typeString": "literal_string \"Invalid _decimals\""
                        },
                        "value": "Invalid _decimals"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6f86eb67bd648d27ce4a2d90e695fc1ea799c79d8ef356679c0180998e1c1453",
                          "typeString": "literal_string \"Invalid _decimals\""
                        }
                      ],
                      "id": 7493,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "313:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7508,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "313:110:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7509,
                  "nodeType": "ExpressionStatement",
                  "src": "313:110:45"
                },
                {
                  "assignments": [
                    7511
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7511,
                      "mutability": "mutable",
                      "name": "decimals",
                      "nameLocation": "440:8:45",
                      "nodeType": "VariableDeclaration",
                      "scope": 7577,
                      "src": "433:15:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 7510,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "433:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7521,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "3130",
                          "id": 7514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "458:2:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10_by_1",
                            "typeString": "int_const 10"
                          },
                          "value": "10"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 7517,
                              "name": "_decimals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7488,
                              "src": "470:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 7516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "462:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 7515,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "462:7:45",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 7518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "462:18:45",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "458:22:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7513,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "451:6:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int256_$",
                        "typeString": "type(int256)"
                      },
                      "typeName": {
                        "id": 7512,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "451:6:45",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 7520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "451:30:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "433:48:45"
                },
                {
                  "assignments": [
                    null,
                    7523,
                    null,
                    null,
                    null
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 7523,
                      "mutability": "mutable",
                      "name": "basePrice",
                      "nameLocation": "501:9:45",
                      "nodeType": "VariableDeclaration",
                      "scope": 7577,
                      "src": "494:16:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 7522,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "494:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    },
                    null,
                    null,
                    null
                  ],
                  "id": 7529,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "arguments": [
                          {
                            "id": 7525,
                            "name": "_base",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7484,
                            "src": "542:5:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 7524,
                          "name": "AggregatorV3Interface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 45,
                          "src": "520:21:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_AggregatorV3Interface_$45_$",
                            "typeString": "type(contract AggregatorV3Interface)"
                          }
                        },
                        "id": 7526,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "520:28:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AggregatorV3Interface_$45",
                          "typeString": "contract AggregatorV3Interface"
                        }
                      },
                      "id": 7527,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "latestRoundData",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 44,
                      "src": "520:57:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$",
                        "typeString": "function () view external returns (uint80,int256,uint256,uint256,uint80)"
                      }
                    },
                    "id": 7528,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "520:59:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$",
                      "typeString": "tuple(uint80,int256,uint256,uint256,uint80)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "491:88:45"
                },
                {
                  "assignments": [
                    7531
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7531,
                      "mutability": "mutable",
                      "name": "baseDecimals",
                      "nameLocation": "595:12:45",
                      "nodeType": "VariableDeclaration",
                      "scope": 7577,
                      "src": "589:18:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 7530,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "589:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7537,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "arguments": [
                          {
                            "id": 7533,
                            "name": "_base",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7484,
                            "src": "632:5:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 7532,
                          "name": "AggregatorV3Interface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 45,
                          "src": "610:21:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_AggregatorV3Interface_$45_$",
                            "typeString": "type(contract AggregatorV3Interface)"
                          }
                        },
                        "id": 7534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "610:28:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AggregatorV3Interface_$45",
                          "typeString": "contract AggregatorV3Interface"
                        }
                      },
                      "id": 7535,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decimals",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6,
                      "src": "610:37:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                        "typeString": "function () view external returns (uint8)"
                      }
                    },
                    "id": 7536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "610:39:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "589:60:45"
                },
                {
                  "expression": {
                    "id": 7544,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 7538,
                      "name": "basePrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7523,
                      "src": "659:9:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 7540,
                          "name": "basePrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7523,
                          "src": "682:9:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        {
                          "id": 7541,
                          "name": "baseDecimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7531,
                          "src": "693:12:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        {
                          "id": 7542,
                          "name": "_decimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7488,
                          "src": "707:9:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "id": 7539,
                        "name": "scalePrice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7630,
                        "src": "671:10:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_uint8_$_t_uint8_$returns$_t_int256_$",
                          "typeString": "function (int256,uint8,uint8) pure returns (int256)"
                        }
                      },
                      "id": 7543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "671:46:45",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "659:58:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 7545,
                  "nodeType": "ExpressionStatement",
                  "src": "659:58:45"
                },
                {
                  "assignments": [
                    null,
                    7547,
                    null,
                    null,
                    null
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 7547,
                      "mutability": "mutable",
                      "name": "quotePrice",
                      "nameLocation": "738:10:45",
                      "nodeType": "VariableDeclaration",
                      "scope": 7577,
                      "src": "731:17:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 7546,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "731:6:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    },
                    null,
                    null,
                    null
                  ],
                  "id": 7553,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "arguments": [
                          {
                            "id": 7549,
                            "name": "_quote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7486,
                            "src": "780:6:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 7548,
                          "name": "AggregatorV3Interface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 45,
                          "src": "758:21:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_AggregatorV3Interface_$45_$",
                            "typeString": "type(contract AggregatorV3Interface)"
                          }
                        },
                        "id": 7550,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "758:29:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AggregatorV3Interface_$45",
                          "typeString": "contract AggregatorV3Interface"
                        }
                      },
                      "id": 7551,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "latestRoundData",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 44,
                      "src": "758:58:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$",
                        "typeString": "function () view external returns (uint80,int256,uint256,uint256,uint80)"
                      }
                    },
                    "id": 7552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "758:60:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$",
                      "typeString": "tuple(uint80,int256,uint256,uint256,uint80)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "728:90:45"
                },
                {
                  "assignments": [
                    7555
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7555,
                      "mutability": "mutable",
                      "name": "quoteDecimals",
                      "nameLocation": "834:13:45",
                      "nodeType": "VariableDeclaration",
                      "scope": 7577,
                      "src": "828:19:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 7554,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "828:5:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7561,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "arguments": [
                          {
                            "id": 7557,
                            "name": "_quote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7486,
                            "src": "872:6:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 7556,
                          "name": "AggregatorV3Interface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 45,
                          "src": "850:21:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_AggregatorV3Interface_$45_$",
                            "typeString": "type(contract AggregatorV3Interface)"
                          }
                        },
                        "id": 7558,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "850:29:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_AggregatorV3Interface_$45",
                          "typeString": "contract AggregatorV3Interface"
                        }
                      },
                      "id": 7559,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decimals",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6,
                      "src": "850:38:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                        "typeString": "function () view external returns (uint8)"
                      }
                    },
                    "id": 7560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "850:40:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "828:62:45"
                },
                {
                  "expression": {
                    "id": 7568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 7562,
                      "name": "quotePrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7547,
                      "src": "900:10:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 7564,
                          "name": "quotePrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7547,
                          "src": "924:10:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        {
                          "id": 7565,
                          "name": "quoteDecimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7555,
                          "src": "936:13:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        {
                          "id": 7566,
                          "name": "_decimals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7488,
                          "src": "951:9:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "id": 7563,
                        "name": "scalePrice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7630,
                        "src": "913:10:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_uint8_$_t_uint8_$returns$_t_int256_$",
                          "typeString": "function (int256,uint8,uint8) pure returns (int256)"
                        }
                      },
                      "id": 7567,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "913:48:45",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "900:61:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 7569,
                  "nodeType": "ExpressionStatement",
                  "src": "900:61:45"
                },
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 7575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 7572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7570,
                            "name": "basePrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7523,
                            "src": "980:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 7571,
                            "name": "decimals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7511,
                            "src": "992:8:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "980:20:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "id": 7573,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "979:22:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "id": 7574,
                      "name": "quotePrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7547,
                      "src": "1004:10:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "979:35:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 7492,
                  "id": 7576,
                  "nodeType": "Return",
                  "src": "972:42:45"
                }
              ]
            },
            "functionSelector": "97436655",
            "id": 7578,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDerivedPrice",
            "nameLocation": "180:15:45",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7489,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7484,
                  "mutability": "mutable",
                  "name": "_base",
                  "nameLocation": "213:5:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 7578,
                  "src": "205:13:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7483,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "205:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7486,
                  "mutability": "mutable",
                  "name": "_quote",
                  "nameLocation": "236:6:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 7578,
                  "src": "228:14:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7485,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "228:7:45",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7488,
                  "mutability": "mutable",
                  "name": "_decimals",
                  "nameLocation": "258:9:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 7578,
                  "src": "252:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 7487,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "252:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "195:78:45"
            },
            "returnParameters": {
              "id": 7492,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7491,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7578,
                  "src": "295:6:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 7490,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "295:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "294:8:45"
            },
            "scope": 7631,
            "src": "171:850:45",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7629,
              "nodeType": "Block",
              "src": "1162:285:45",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 7591,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 7589,
                      "name": "_priceDecimals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7582,
                      "src": "1176:14:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 7590,
                      "name": "_decimals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7584,
                      "src": "1193:9:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "1176:26:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "id": 7609,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 7607,
                        "name": "_priceDecimals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7582,
                        "src": "1302:14:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "id": 7608,
                        "name": "_decimals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7584,
                        "src": "1319:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "src": "1302:26:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 7625,
                    "nodeType": "IfStatement",
                    "src": "1298:120:45",
                    "trueBody": {
                      "id": 7624,
                      "nodeType": "Block",
                      "src": "1330:88:45",
                      "statements": [
                        {
                          "expression": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 7622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7610,
                              "name": "_price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7580,
                              "src": "1351:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7620,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "3130",
                                    "id": 7613,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1367:2:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "10"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        "id": 7618,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7616,
                                          "name": "_priceDecimals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7582,
                                          "src": "1379:14:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 7617,
                                          "name": "_decimals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7584,
                                          "src": "1396:9:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "src": "1379:26:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "id": 7615,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1371:7:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 7614,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1371:7:45",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 7619,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1371:35:45",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1367:39:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 7612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1360:6:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int256_$",
                                  "typeString": "type(int256)"
                                },
                                "typeName": {
                                  "id": 7611,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1360:6:45",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 7621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1360:47:45",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "1351:56:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "functionReturnParameters": 7588,
                          "id": 7623,
                          "nodeType": "Return",
                          "src": "1344:63:45"
                        }
                      ]
                    }
                  },
                  "id": 7626,
                  "nodeType": "IfStatement",
                  "src": "1172:246:45",
                  "trueBody": {
                    "id": 7606,
                    "nodeType": "Block",
                    "src": "1204:88:45",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 7604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7592,
                            "name": "_price",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7580,
                            "src": "1225:6:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7602,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 7595,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1241:2:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "id": 7600,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7598,
                                        "name": "_decimals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7584,
                                        "src": "1253:9:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 7599,
                                        "name": "_priceDecimals",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7582,
                                        "src": "1265:14:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "src": "1253:26:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    ],
                                    "id": 7597,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1245:7:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 7596,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1245:7:45",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 7601,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1245:35:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1241:39:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1234:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 7593,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1234:6:45",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 7603,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1234:47:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "1225:56:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 7588,
                        "id": 7605,
                        "nodeType": "Return",
                        "src": "1218:63:45"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 7627,
                    "name": "_price",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7580,
                    "src": "1434:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 7588,
                  "id": 7628,
                  "nodeType": "Return",
                  "src": "1427:13:45"
                }
              ]
            },
            "id": 7630,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "scalePrice",
            "nameLocation": "1036:10:45",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7585,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7580,
                  "mutability": "mutable",
                  "name": "_price",
                  "nameLocation": "1063:6:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 7630,
                  "src": "1056:13:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 7579,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1056:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7582,
                  "mutability": "mutable",
                  "name": "_priceDecimals",
                  "nameLocation": "1085:14:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 7630,
                  "src": "1079:20:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 7581,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1079:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7584,
                  "mutability": "mutable",
                  "name": "_decimals",
                  "nameLocation": "1115:9:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 7630,
                  "src": "1109:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 7583,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1109:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1046:84:45"
            },
            "returnParameters": {
              "id": 7588,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7587,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7630,
                  "src": "1154:6:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 7586,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1154:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1153:8:45"
            },
            "scope": 7631,
            "src": "1027:420:45",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 7632,
        "src": "142:1307:45",
        "usedErrors": []
      }
    ],
    "src": "38:1412:45"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.11+commit.d7f03943.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.4",
  "updatedAt": "2022-03-06T23:47:11.088Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}