{
    "contractName": "Math",
    "abi": [],
    "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]}},\"version\":1}",
    "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122095d33d3dc9105e0420d4cf361291b7d3c8f0bcc1516ec5b66ab83aab4ccbd9fd64736f6c63430008070033",
    "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122095d33d3dc9105e0420d4cf361291b7d3c8f0bcc1516ec5b66ab83aab4ccbd9fd64736f6c63430008070033",
    "immutableReferences": {},
    "sourceMap": "202:8624:61:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;202:8624:61;;;;;;;;;;;;;;;;;",
    "deployedSourceMap": "202:8624:61:-:0;;;;;;;;",
    "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n    enum Rounding {\n        Down, // Toward negative infinity\n        Up, // Toward infinity\n        Zero // Toward zero\n    }\n\n    /**\n     * @dev Returns the largest of two numbers.\n     */\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a >= b ? a : b;\n    }\n\n    /**\n     * @dev Returns the smallest of two numbers.\n     */\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a < b ? a : b;\n    }\n\n    /**\n     * @dev Returns the average of two numbers. The result is rounded towards\n     * zero.\n     */\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\n        // (a + b) / 2 can overflow.\n        return (a & b) + (a ^ b) / 2;\n    }\n\n    /**\n     * @dev Returns the ceiling of the division of two numbers.\n     *\n     * This differs from standard division with `/` in that it rounds up instead\n     * of rounding down.\n     */\n    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n        // (a + b - 1) / b can overflow on addition, so we distribute.\n        return a == 0 ? 0 : (a - 1) / b + 1;\n    }\n\n    /**\n     * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n     * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n     * with further edits by Uniswap Labs also under MIT license.\n     */\n    function mulDiv(\n        uint256 x,\n        uint256 y,\n        uint256 denominator\n    ) internal pure returns (uint256 result) {\n        unchecked {\n            // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n            // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n            // variables such that product = prod1 * 2^256 + prod0.\n            uint256 prod0; // Least significant 256 bits of the product\n            uint256 prod1; // Most significant 256 bits of the product\n            assembly {\n                let mm := mulmod(x, y, not(0))\n                prod0 := mul(x, y)\n                prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n            }\n\n            // Handle non-overflow cases, 256 by 256 division.\n            if (prod1 == 0) {\n                return prod0 / denominator;\n            }\n\n            // Make sure the result is less than 2^256. Also prevents denominator == 0.\n            require(denominator > prod1);\n\n            ///////////////////////////////////////////////\n            // 512 by 256 division.\n            ///////////////////////////////////////////////\n\n            // Make division exact by subtracting the remainder from [prod1 prod0].\n            uint256 remainder;\n            assembly {\n                // Compute remainder using mulmod.\n                remainder := mulmod(x, y, denominator)\n\n                // Subtract 256 bit number from 512 bit number.\n                prod1 := sub(prod1, gt(remainder, prod0))\n                prod0 := sub(prod0, remainder)\n            }\n\n            // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n            // See https://cs.stackexchange.com/q/138556/92363.\n\n            // Does not overflow because the denominator cannot be zero at this stage in the function.\n            uint256 twos = denominator & (~denominator + 1);\n            assembly {\n                // Divide denominator by twos.\n                denominator := div(denominator, twos)\n\n                // Divide [prod1 prod0] by twos.\n                prod0 := div(prod0, twos)\n\n                // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n                twos := add(div(sub(0, twos), twos), 1)\n            }\n\n            // Shift in bits from prod1 into prod0.\n            prod0 |= prod1 * twos;\n\n            // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n            // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n            // four bits. That is, denominator * inv = 1 mod 2^4.\n            uint256 inverse = (3 * denominator) ^ 2;\n\n            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n            // in modular arithmetic, doubling the correct bits in each step.\n            inverse *= 2 - denominator * inverse; // inverse mod 2^8\n            inverse *= 2 - denominator * inverse; // inverse mod 2^16\n            inverse *= 2 - denominator * inverse; // inverse mod 2^32\n            inverse *= 2 - denominator * inverse; // inverse mod 2^64\n            inverse *= 2 - denominator * inverse; // inverse mod 2^128\n            inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n            // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n            // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n            // is no longer required.\n            result = prod0 * inverse;\n            return result;\n        }\n    }\n\n    /**\n     * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n     */\n    function mulDiv(\n        uint256 x,\n        uint256 y,\n        uint256 denominator,\n        Rounding rounding\n    ) internal pure returns (uint256) {\n        uint256 result = mulDiv(x, y, denominator);\n        if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n            result += 1;\n        }\n        return result;\n    }\n\n    /**\n     * @dev Returns the square root of a number. It the number is not a perfect square, the value is rounded down.\n     *\n     * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n     */\n    function sqrt(uint256 a) internal pure returns (uint256) {\n        if (a == 0) {\n            return 0;\n        }\n\n        // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n        // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n        // `msb(a) <= a < 2*msb(a)`.\n        // We also know that `k`, the position of the most significant bit, is such that `msb(a) = 2**k`.\n        // This gives `2**k < a <= 2**(k+1)` → `2**(k/2) <= sqrt(a) < 2 ** (k/2+1)`.\n        // Using an algorithm similar to the msb conmputation, we are able to compute `result = 2**(k/2)` which is a\n        // good first aproximation of `sqrt(a)` with at least 1 correct bit.\n        uint256 result = 1;\n        uint256 x = a;\n        if (x >> 128 > 0) {\n            x >>= 128;\n            result <<= 64;\n        }\n        if (x >> 64 > 0) {\n            x >>= 64;\n            result <<= 32;\n        }\n        if (x >> 32 > 0) {\n            x >>= 32;\n            result <<= 16;\n        }\n        if (x >> 16 > 0) {\n            x >>= 16;\n            result <<= 8;\n        }\n        if (x >> 8 > 0) {\n            x >>= 8;\n            result <<= 4;\n        }\n        if (x >> 4 > 0) {\n            x >>= 4;\n            result <<= 2;\n        }\n        if (x >> 2 > 0) {\n            result <<= 1;\n        }\n\n        // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n        // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n        // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n        // into the expected uint128 result.\n        unchecked {\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            return min(result, a / result);\n        }\n    }\n\n    /**\n     * @notice Calculates sqrt(a), following the selected rounding direction.\n     */\n    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n        uint256 result = sqrt(a);\n        if (rounding == Rounding.Up && result * result < a) {\n            result += 1;\n        }\n        return result;\n    }\n}\n",
    "sourcePath": "@openzeppelin/contracts/utils/math/Math.sol",
    "ast": {
        "absolutePath": "@openzeppelin/contracts/utils/math/Math.sol",
        "exportedSymbols": {
            "Math": [
                12856
            ]
        },
        "id": 12857,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 12354,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "103:23:61"
            },
            {
                "abstract": false,
                "baseContracts": [],
                "contractDependencies": [],
                "contractKind": "library",
                "documentation": {
                    "id": 12355,
                    "nodeType": "StructuredDocumentation",
                    "src": "128:73:61",
                    "text": " @dev Standard math utilities missing in the Solidity language."
                },
                "fullyImplemented": true,
                "id": 12856,
                "linearizedBaseContracts": [
                    12856
                ],
                "name": "Math",
                "nameLocation": "210:4:61",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "canonicalName": "Math.Rounding",
                        "id": 12359,
                        "members": [
                            {
                                "id": 12356,
                                "name": "Down",
                                "nameLocation": "245:4:61",
                                "nodeType": "EnumValue",
                                "src": "245:4:61"
                            },
                            {
                                "id": 12357,
                                "name": "Up",
                                "nameLocation": "287:2:61",
                                "nodeType": "EnumValue",
                                "src": "287:2:61"
                            },
                            {
                                "id": 12358,
                                "name": "Zero",
                                "nameLocation": "318:4:61",
                                "nodeType": "EnumValue",
                                "src": "318:4:61"
                            }
                        ],
                        "name": "Rounding",
                        "nameLocation": "226:8:61",
                        "nodeType": "EnumDefinition",
                        "src": "221:122:61"
                    },
                    {
                        "body": {
                            "id": 12376,
                            "nodeType": "Block",
                            "src": "480:38:61",
                            "statements": [
                                {
                                    "expression": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12371,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12369,
                                                "name": "a",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12362,
                                                "src": "497:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">=",
                                            "rightExpression": {
                                                "id": 12370,
                                                "name": "b",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12364,
                                                "src": "502:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "src": "497:6:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "falseExpression": {
                                            "id": 12373,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12364,
                                            "src": "510:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 12374,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "497:14:61",
                                        "trueExpression": {
                                            "id": 12372,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12362,
                                            "src": "506:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 12368,
                                    "id": 12375,
                                    "nodeType": "Return",
                                    "src": "490:21:61"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12360,
                            "nodeType": "StructuredDocumentation",
                            "src": "349:59:61",
                            "text": " @dev Returns the largest of two numbers."
                        },
                        "id": 12377,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "max",
                        "nameLocation": "422:3:61",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12365,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12362,
                                    "mutability": "mutable",
                                    "name": "a",
                                    "nameLocation": "434:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12377,
                                    "src": "426:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12361,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "426:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12364,
                                    "mutability": "mutable",
                                    "name": "b",
                                    "nameLocation": "445:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12377,
                                    "src": "437:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12363,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "437:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "425:22:61"
                        },
                        "returnParameters": {
                            "id": 12368,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12367,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12377,
                                    "src": "471:7:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12366,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "471:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "470:9:61"
                        },
                        "scope": 12856,
                        "src": "413:105:61",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12394,
                            "nodeType": "Block",
                            "src": "656:37:61",
                            "statements": [
                                {
                                    "expression": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12389,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12387,
                                                "name": "a",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12380,
                                                "src": "673:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<",
                                            "rightExpression": {
                                                "id": 12388,
                                                "name": "b",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12382,
                                                "src": "677:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "src": "673:5:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "falseExpression": {
                                            "id": 12391,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12382,
                                            "src": "685:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 12392,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "673:13:61",
                                        "trueExpression": {
                                            "id": 12390,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12380,
                                            "src": "681:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 12386,
                                    "id": 12393,
                                    "nodeType": "Return",
                                    "src": "666:20:61"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12378,
                            "nodeType": "StructuredDocumentation",
                            "src": "524:60:61",
                            "text": " @dev Returns the smallest of two numbers."
                        },
                        "id": 12395,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "min",
                        "nameLocation": "598:3:61",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12383,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12380,
                                    "mutability": "mutable",
                                    "name": "a",
                                    "nameLocation": "610:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12395,
                                    "src": "602:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12379,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "602:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12382,
                                    "mutability": "mutable",
                                    "name": "b",
                                    "nameLocation": "621:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12395,
                                    "src": "613:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12381,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "613:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "601:22:61"
                        },
                        "returnParameters": {
                            "id": 12386,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12385,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12395,
                                    "src": "647:7:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12384,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "647:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "646:9:61"
                        },
                        "scope": 12856,
                        "src": "589:104:61",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12417,
                            "nodeType": "Block",
                            "src": "877:82:61",
                            "statements": [
                                {
                                    "expression": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12415,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "components": [
                                                {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12407,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 12405,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12398,
                                                        "src": "932:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&",
                                                    "rightExpression": {
                                                        "id": 12406,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12400,
                                                        "src": "936:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "932:5:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 12408,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "931:7:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12414,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "components": [
                                                    {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12411,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12409,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12398,
                                                            "src": "942:1:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "^",
                                                        "rightExpression": {
                                                            "id": 12410,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12400,
                                                            "src": "946:1:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "942:5:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "id": 12412,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "941:7:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "/",
                                            "rightExpression": {
                                                "hexValue": "32",
                                                "id": 12413,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "951:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_2_by_1",
                                                    "typeString": "int_const 2"
                                                },
                                                "value": "2"
                                            },
                                            "src": "941:11:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "931:21:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 12404,
                                    "id": 12416,
                                    "nodeType": "Return",
                                    "src": "924:28:61"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12396,
                            "nodeType": "StructuredDocumentation",
                            "src": "699:102:61",
                            "text": " @dev Returns the average of two numbers. The result is rounded towards\n zero."
                        },
                        "id": 12418,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "average",
                        "nameLocation": "815:7:61",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12401,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12398,
                                    "mutability": "mutable",
                                    "name": "a",
                                    "nameLocation": "831:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12418,
                                    "src": "823:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12397,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "823:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12400,
                                    "mutability": "mutable",
                                    "name": "b",
                                    "nameLocation": "842:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12418,
                                    "src": "834:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12399,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "834:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "822:22:61"
                        },
                        "returnParameters": {
                            "id": 12404,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12403,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12418,
                                    "src": "868:7:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12402,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "868:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "867:9:61"
                        },
                        "scope": 12856,
                        "src": "806:153:61",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12442,
                            "nodeType": "Block",
                            "src": "1229:123:61",
                            "statements": [
                                {
                                    "expression": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12430,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12428,
                                                "name": "a",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12421,
                                                "src": "1317:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "hexValue": "30",
                                                "id": 12429,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1322:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            "src": "1317:6:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "falseExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12439,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 12437,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "components": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 12434,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 12432,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12421,
                                                                "src": "1331:1:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "-",
                                                            "rightExpression": {
                                                                "hexValue": "31",
                                                                "id": 12433,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1335:1:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                    "typeString": "int_const 1"
                                                                },
                                                                "value": "1"
                                                            },
                                                            "src": "1331:5:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "id": 12435,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "1330:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "/",
                                                "rightExpression": {
                                                    "id": 12436,
                                                    "name": "b",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12423,
                                                    "src": "1340:1:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "1330:11:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                                "hexValue": "31",
                                                "id": 12438,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1344:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                            },
                                            "src": "1330:15:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 12440,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "1317:28:61",
                                        "trueExpression": {
                                            "hexValue": "30",
                                            "id": 12431,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1326:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 12427,
                                    "id": 12441,
                                    "nodeType": "Return",
                                    "src": "1310:35:61"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12419,
                            "nodeType": "StructuredDocumentation",
                            "src": "965:188:61",
                            "text": " @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."
                        },
                        "id": 12443,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "ceilDiv",
                        "nameLocation": "1167:7:61",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12424,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12421,
                                    "mutability": "mutable",
                                    "name": "a",
                                    "nameLocation": "1183:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12443,
                                    "src": "1175:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12420,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1175:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12423,
                                    "mutability": "mutable",
                                    "name": "b",
                                    "nameLocation": "1194:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12443,
                                    "src": "1186:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12422,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1186:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1174:22:61"
                        },
                        "returnParameters": {
                            "id": 12427,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12426,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12443,
                                    "src": "1220:7:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12425,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1220:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1219:9:61"
                        },
                        "scope": 12856,
                        "src": "1158:194:61",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12564,
                            "nodeType": "Block",
                            "src": "1796:3797:61",
                            "statements": [
                                {
                                    "id": 12563,
                                    "nodeType": "UncheckedBlock",
                                    "src": "1806:3781:61",
                                    "statements": [
                                        {
                                            "assignments": [
                                                12456
                                            ],
                                            "declarations": [
                                                {
                                                    "constant": false,
                                                    "id": 12456,
                                                    "mutability": "mutable",
                                                    "name": "prod0",
                                                    "nameLocation": "2135:5:61",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 12563,
                                                    "src": "2127:13:61",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 12455,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "2127:7:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                }
                                            ],
                                            "id": 12457,
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "2127:13:61"
                                        },
                                        {
                                            "assignments": [
                                                12459
                                            ],
                                            "declarations": [
                                                {
                                                    "constant": false,
                                                    "id": 12459,
                                                    "mutability": "mutable",
                                                    "name": "prod1",
                                                    "nameLocation": "2207:5:61",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 12563,
                                                    "src": "2199:13:61",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 12458,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "2199:7:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                }
                                            ],
                                            "id": 12460,
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "2199:13:61"
                                        },
                                        {
                                            "AST": {
                                                "nodeType": "YulBlock",
                                                "src": "2279:157:61",
                                                "statements": [
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "2297:30:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "x",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2314:1:61"
                                                                },
                                                                {
                                                                    "name": "y",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2317:1:61"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "2324:1:61",
                                                                            "type": "",
                                                                            "value": "0"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "not",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2320:3:61"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "2320:6:61"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "mulmod",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2307:6:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2307:20:61"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "mm",
                                                                "nodeType": "YulTypedName",
                                                                "src": "2301:2:61",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "2344:18:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "x",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2357:1:61"
                                                                },
                                                                {
                                                                    "name": "y",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2360:1:61"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "mul",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2353:3:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2353:9:61"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "prod0",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2344:5:61"
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "2379:43:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "mm",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2396:2:61"
                                                                        },
                                                                        {
                                                                            "name": "prod0",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2400:5:61"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "sub",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2392:3:61"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "2392:14:61"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "mm",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2411:2:61"
                                                                        },
                                                                        {
                                                                            "name": "prod0",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2415:5:61"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "lt",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2408:2:61"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "2408:13:61"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "sub",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2388:3:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2388:34:61"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "prod1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2379:5:61"
                                                            }
                                                        ]
                                                    }
                                                ]
                                            },
                                            "evmVersion": "london",
                                            "externalReferences": [
                                                {
                                                    "declaration": 12456,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "2344:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12456,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "2400:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12456,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "2415:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12459,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "2379:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12446,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "2314:1:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12446,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "2357:1:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12448,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "2317:1:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12448,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "2360:1:61",
                                                    "valueSize": 1
                                                }
                                            ],
                                            "id": 12461,
                                            "nodeType": "InlineAssembly",
                                            "src": "2270:166:61"
                                        },
                                        {
                                            "condition": {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 12464,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 12462,
                                                    "name": "prod1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12459,
                                                    "src": "2517:5:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "hexValue": "30",
                                                    "id": 12463,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "2526:1:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "src": "2517:10:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "id": 12470,
                                            "nodeType": "IfStatement",
                                            "src": "2513:75:61",
                                            "trueBody": {
                                                "id": 12469,
                                                "nodeType": "Block",
                                                "src": "2529:59:61",
                                                "statements": [
                                                    {
                                                        "expression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 12467,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 12465,
                                                                "name": "prod0",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12456,
                                                                "src": "2554:5:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                                "id": 12466,
                                                                "name": "denominator",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12450,
                                                                "src": "2562:11:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "2554:19:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "functionReturnParameters": 12454,
                                                        "id": 12468,
                                                        "nodeType": "Return",
                                                        "src": "2547:26:61"
                                                    }
                                                ]
                                            }
                                        },
                                        {
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12474,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12472,
                                                            "name": "denominator",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12450,
                                                            "src": "2698:11:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "id": 12473,
                                                            "name": "prod1",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12459,
                                                            "src": "2712:5:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "2698:19:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    ],
                                                    "id": 12471,
                                                    "name": "require",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [
                                                        4294967278,
                                                        4294967278
                                                    ],
                                                    "referencedDeclaration": 4294967278,
                                                    "src": "2690:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                                        "typeString": "function (bool) pure"
                                                    }
                                                },
                                                "id": 12475,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2690:28:61",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_tuple$__$",
                                                    "typeString": "tuple()"
                                                }
                                            },
                                            "id": 12476,
                                            "nodeType": "ExpressionStatement",
                                            "src": "2690:28:61"
                                        },
                                        {
                                            "assignments": [
                                                12478
                                            ],
                                            "declarations": [
                                                {
                                                    "constant": false,
                                                    "id": 12478,
                                                    "mutability": "mutable",
                                                    "name": "remainder",
                                                    "nameLocation": "2982:9:61",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 12563,
                                                    "src": "2974:17:61",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 12477,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "2974:7:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                }
                                            ],
                                            "id": 12479,
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "2974:17:61"
                                        },
                                        {
                                            "AST": {
                                                "nodeType": "YulBlock",
                                                "src": "3014:291:61",
                                                "statements": [
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "3083:38:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "x",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3103:1:61"
                                                                },
                                                                {
                                                                    "name": "y",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3106:1:61"
                                                                },
                                                                {
                                                                    "name": "denominator",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3109:11:61"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "mulmod",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3096:6:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3096:25:61"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "remainder",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3083:9:61"
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "3203:41:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "prod1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3216:5:61"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "remainder",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3226:9:61"
                                                                        },
                                                                        {
                                                                            "name": "prod0",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3237:5:61"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "gt",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3223:2:61"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "3223:20:61"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "sub",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3212:3:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3212:32:61"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "prod1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3203:5:61"
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "3261:30:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "prod0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3274:5:61"
                                                                },
                                                                {
                                                                    "name": "remainder",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3281:9:61"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "sub",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3270:3:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3270:21:61"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "prod0",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3261:5:61"
                                                            }
                                                        ]
                                                    }
                                                ]
                                            },
                                            "evmVersion": "london",
                                            "externalReferences": [
                                                {
                                                    "declaration": 12450,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3109:11:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12456,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3237:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12456,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3261:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12456,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3274:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12459,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3203:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12459,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3216:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12478,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3083:9:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12478,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3226:9:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12478,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3281:9:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12446,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3103:1:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12448,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3106:1:61",
                                                    "valueSize": 1
                                                }
                                            ],
                                            "id": 12480,
                                            "nodeType": "InlineAssembly",
                                            "src": "3005:300:61"
                                        },
                                        {
                                            "assignments": [
                                                12482
                                            ],
                                            "declarations": [
                                                {
                                                    "constant": false,
                                                    "id": 12482,
                                                    "mutability": "mutable",
                                                    "name": "twos",
                                                    "nameLocation": "3620:4:61",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 12563,
                                                    "src": "3612:12:61",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 12481,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "3612:7:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                }
                                            ],
                                            "id": 12490,
                                            "initialValue": {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 12489,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 12483,
                                                    "name": "denominator",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12450,
                                                    "src": "3627:11:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "&",
                                                "rightExpression": {
                                                    "components": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 12487,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 12485,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "UnaryOperation",
                                                                "operator": "~",
                                                                "prefix": true,
                                                                "src": "3642:12:61",
                                                                "subExpression": {
                                                                    "id": 12484,
                                                                    "name": "denominator",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 12450,
                                                                    "src": "3643:11:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "+",
                                                            "rightExpression": {
                                                                "hexValue": "31",
                                                                "id": 12486,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "3657:1:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                    "typeString": "int_const 1"
                                                                },
                                                                "value": "1"
                                                            },
                                                            "src": "3642:16:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "id": 12488,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "3641:18:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "3627:32:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "3612:47:61"
                                        },
                                        {
                                            "AST": {
                                                "nodeType": "YulBlock",
                                                "src": "3682:362:61",
                                                "statements": [
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "3747:37:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "denominator",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3766:11:61"
                                                                },
                                                                {
                                                                    "name": "twos",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3779:4:61"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "div",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3762:3:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3762:22:61"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "denominator",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3747:11:61"
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "3851:25:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "prod0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3864:5:61"
                                                                },
                                                                {
                                                                    "name": "twos",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3871:4:61"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "div",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3860:3:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3860:16:61"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "prod0",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3851:5:61"
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "3991:39:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4011:1:61",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "name": "twos",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4014:4:61"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "sub",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4007:3:61"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4007:12:61"
                                                                        },
                                                                        {
                                                                            "name": "twos",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4021:4:61"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "div",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4003:3:61"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "4003:23:61"
                                                                },
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "4028:1:61",
                                                                    "type": "",
                                                                    "value": "1"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3999:3:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3999:31:61"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "twos",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3991:4:61"
                                                            }
                                                        ]
                                                    }
                                                ]
                                            },
                                            "evmVersion": "london",
                                            "externalReferences": [
                                                {
                                                    "declaration": 12450,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3747:11:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12450,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3766:11:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12456,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3851:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12456,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3864:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12482,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3779:4:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12482,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3871:4:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12482,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3991:4:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12482,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "4014:4:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12482,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "4021:4:61",
                                                    "valueSize": 1
                                                }
                                            ],
                                            "id": 12491,
                                            "nodeType": "InlineAssembly",
                                            "src": "3673:371:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12496,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12492,
                                                    "name": "prod0",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12456,
                                                    "src": "4110:5:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "|=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12495,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 12493,
                                                        "name": "prod1",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12459,
                                                        "src": "4119:5:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "*",
                                                    "rightExpression": {
                                                        "id": 12494,
                                                        "name": "twos",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12482,
                                                        "src": "4127:4:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4119:12:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "4110:21:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12497,
                                            "nodeType": "ExpressionStatement",
                                            "src": "4110:21:61"
                                        },
                                        {
                                            "assignments": [
                                                12499
                                            ],
                                            "declarations": [
                                                {
                                                    "constant": false,
                                                    "id": 12499,
                                                    "mutability": "mutable",
                                                    "name": "inverse",
                                                    "nameLocation": "4457:7:61",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 12563,
                                                    "src": "4449:15:61",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 12498,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "4449:7:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                }
                                            ],
                                            "id": 12506,
                                            "initialValue": {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 12505,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "components": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 12502,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "hexValue": "33",
                                                                "id": 12500,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "4468:1:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_3_by_1",
                                                                    "typeString": "int_const 3"
                                                                },
                                                                "value": "3"
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "*",
                                                            "rightExpression": {
                                                                "id": 12501,
                                                                "name": "denominator",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12450,
                                                                "src": "4472:11:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "4468:15:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "id": 12503,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "4467:17:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "^",
                                                "rightExpression": {
                                                    "hexValue": "32",
                                                    "id": 12504,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "4487:1:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_2_by_1",
                                                        "typeString": "int_const 2"
                                                    },
                                                    "value": "2"
                                                },
                                                "src": "4467:21:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "4449:39:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12513,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12507,
                                                    "name": "inverse",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12499,
                                                    "src": "4705:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "*=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12512,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "hexValue": "32",
                                                        "id": 12508,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4716:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_2_by_1",
                                                            "typeString": "int_const 2"
                                                        },
                                                        "value": "2"
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12511,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12509,
                                                            "name": "denominator",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12450,
                                                            "src": "4720:11:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "id": 12510,
                                                            "name": "inverse",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12499,
                                                            "src": "4734:7:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "4720:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4716:25:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "4705:36:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12514,
                                            "nodeType": "ExpressionStatement",
                                            "src": "4705:36:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12521,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12515,
                                                    "name": "inverse",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12499,
                                                    "src": "4774:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "*=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12520,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "hexValue": "32",
                                                        "id": 12516,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4785:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_2_by_1",
                                                            "typeString": "int_const 2"
                                                        },
                                                        "value": "2"
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12519,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12517,
                                                            "name": "denominator",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12450,
                                                            "src": "4789:11:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "id": 12518,
                                                            "name": "inverse",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12499,
                                                            "src": "4803:7:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "4789:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4785:25:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "4774:36:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12522,
                                            "nodeType": "ExpressionStatement",
                                            "src": "4774:36:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12529,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12523,
                                                    "name": "inverse",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12499,
                                                    "src": "4844:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "*=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12528,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "hexValue": "32",
                                                        "id": 12524,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4855:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_2_by_1",
                                                            "typeString": "int_const 2"
                                                        },
                                                        "value": "2"
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12527,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12525,
                                                            "name": "denominator",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12450,
                                                            "src": "4859:11:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "id": 12526,
                                                            "name": "inverse",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12499,
                                                            "src": "4873:7:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "4859:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4855:25:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "4844:36:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12530,
                                            "nodeType": "ExpressionStatement",
                                            "src": "4844:36:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12537,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12531,
                                                    "name": "inverse",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12499,
                                                    "src": "4914:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "*=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12536,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "hexValue": "32",
                                                        "id": 12532,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4925:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_2_by_1",
                                                            "typeString": "int_const 2"
                                                        },
                                                        "value": "2"
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12535,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12533,
                                                            "name": "denominator",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12450,
                                                            "src": "4929:11:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "id": 12534,
                                                            "name": "inverse",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12499,
                                                            "src": "4943:7:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "4929:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4925:25:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "4914:36:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12538,
                                            "nodeType": "ExpressionStatement",
                                            "src": "4914:36:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12545,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12539,
                                                    "name": "inverse",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12499,
                                                    "src": "4984:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "*=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12544,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "hexValue": "32",
                                                        "id": 12540,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4995:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_2_by_1",
                                                            "typeString": "int_const 2"
                                                        },
                                                        "value": "2"
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12543,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12541,
                                                            "name": "denominator",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12450,
                                                            "src": "4999:11:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "id": 12542,
                                                            "name": "inverse",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12499,
                                                            "src": "5013:7:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "4999:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4995:25:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "4984:36:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12546,
                                            "nodeType": "ExpressionStatement",
                                            "src": "4984:36:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12553,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12547,
                                                    "name": "inverse",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12499,
                                                    "src": "5055:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "*=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12552,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "hexValue": "32",
                                                        "id": 12548,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "5066:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_2_by_1",
                                                            "typeString": "int_const 2"
                                                        },
                                                        "value": "2"
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12551,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12549,
                                                            "name": "denominator",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12450,
                                                            "src": "5070:11:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "id": 12550,
                                                            "name": "inverse",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12499,
                                                            "src": "5084:7:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "5070:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5066:25:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "5055:36:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12554,
                                            "nodeType": "ExpressionStatement",
                                            "src": "5055:36:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12559,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12555,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12453,
                                                    "src": "5525:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12558,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 12556,
                                                        "name": "prod0",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12456,
                                                        "src": "5534:5:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "*",
                                                    "rightExpression": {
                                                        "id": 12557,
                                                        "name": "inverse",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12499,
                                                        "src": "5542:7:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5534:15:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "5525:24:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12560,
                                            "nodeType": "ExpressionStatement",
                                            "src": "5525:24:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12561,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12453,
                                                "src": "5570:6:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "functionReturnParameters": 12454,
                                            "id": 12562,
                                            "nodeType": "Return",
                                            "src": "5563:13:61"
                                        }
                                    ]
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12444,
                            "nodeType": "StructuredDocumentation",
                            "src": "1358:305:61",
                            "text": " @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."
                        },
                        "id": 12565,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "mulDiv",
                        "nameLocation": "1677:6:61",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12451,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12446,
                                    "mutability": "mutable",
                                    "name": "x",
                                    "nameLocation": "1701:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12565,
                                    "src": "1693:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12445,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1693:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12448,
                                    "mutability": "mutable",
                                    "name": "y",
                                    "nameLocation": "1720:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12565,
                                    "src": "1712:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12447,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1712:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12450,
                                    "mutability": "mutable",
                                    "name": "denominator",
                                    "nameLocation": "1739:11:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12565,
                                    "src": "1731:19:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12449,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1731:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1683:73:61"
                        },
                        "returnParameters": {
                            "id": 12454,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12453,
                                    "mutability": "mutable",
                                    "name": "result",
                                    "nameLocation": "1788:6:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12565,
                                    "src": "1780:14:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12452,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1780:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1779:16:61"
                        },
                        "scope": 12856,
                        "src": "1668:3925:61",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12608,
                            "nodeType": "Block",
                            "src": "5873:189:61",
                            "statements": [
                                {
                                    "assignments": [
                                        12581
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 12581,
                                            "mutability": "mutable",
                                            "name": "result",
                                            "nameLocation": "5891:6:61",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 12608,
                                            "src": "5883:14:61",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 12580,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5883:7:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 12587,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 12583,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12568,
                                                "src": "5907:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 12584,
                                                "name": "y",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12570,
                                                "src": "5910:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 12585,
                                                "name": "denominator",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12572,
                                                "src": "5913:11:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 12582,
                                            "name": "mulDiv",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                12565,
                                                12609
                                            ],
                                            "referencedDeclaration": 12565,
                                            "src": "5900:6:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 12586,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5900:25:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5883:42:61"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "id": 12599,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_enum$_Rounding_$12359",
                                                "typeString": "enum Math.Rounding"
                                            },
                                            "id": 12591,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12588,
                                                "name": "rounding",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12575,
                                                "src": "5939:8:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_Rounding_$12359",
                                                    "typeString": "enum Math.Rounding"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "expression": {
                                                    "id": 12589,
                                                    "name": "Rounding",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12359,
                                                    "src": "5951:8:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_enum$_Rounding_$12359_$",
                                                        "typeString": "type(enum Math.Rounding)"
                                                    }
                                                },
                                                "id": 12590,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberName": "Up",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12357,
                                                "src": "5951:11:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_Rounding_$12359",
                                                    "typeString": "enum Math.Rounding"
                                                }
                                            },
                                            "src": "5939:23:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12598,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "arguments": [
                                                    {
                                                        "id": 12593,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12568,
                                                        "src": "5973:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "id": 12594,
                                                        "name": "y",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12570,
                                                        "src": "5976:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "id": 12595,
                                                        "name": "denominator",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12572,
                                                        "src": "5979:11:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "id": 12592,
                                                    "name": "mulmod",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967280,
                                                    "src": "5966:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 12596,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5966:25:61",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">",
                                            "rightExpression": {
                                                "hexValue": "30",
                                                "id": 12597,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5994:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            "src": "5966:29:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "src": "5939:56:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12605,
                                    "nodeType": "IfStatement",
                                    "src": "5935:98:61",
                                    "trueBody": {
                                        "id": 12604,
                                        "nodeType": "Block",
                                        "src": "5997:36:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12602,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12600,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12581,
                                                        "src": "6011:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "hexValue": "31",
                                                        "id": 12601,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "6021:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "6011:11:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12603,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6011:11:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "id": 12606,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12581,
                                        "src": "6049:6:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 12579,
                                    "id": 12607,
                                    "nodeType": "Return",
                                    "src": "6042:13:61"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12566,
                            "nodeType": "StructuredDocumentation",
                            "src": "5599:121:61",
                            "text": " @notice Calculates x * y / denominator with full precision, following the selected rounding direction."
                        },
                        "id": 12609,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "mulDiv",
                        "nameLocation": "5734:6:61",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12576,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12568,
                                    "mutability": "mutable",
                                    "name": "x",
                                    "nameLocation": "5758:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12609,
                                    "src": "5750:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12567,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5750:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12570,
                                    "mutability": "mutable",
                                    "name": "y",
                                    "nameLocation": "5777:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12609,
                                    "src": "5769:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12569,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5769:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12572,
                                    "mutability": "mutable",
                                    "name": "denominator",
                                    "nameLocation": "5796:11:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12609,
                                    "src": "5788:19:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12571,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5788:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12575,
                                    "mutability": "mutable",
                                    "name": "rounding",
                                    "nameLocation": "5826:8:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12609,
                                    "src": "5817:17:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Rounding_$12359",
                                        "typeString": "enum Math.Rounding"
                                    },
                                    "typeName": {
                                        "id": 12574,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 12573,
                                            "name": "Rounding",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 12359,
                                            "src": "5817:8:61"
                                        },
                                        "referencedDeclaration": 12359,
                                        "src": "5817:8:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_Rounding_$12359",
                                            "typeString": "enum Math.Rounding"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5740:100:61"
                        },
                        "returnParameters": {
                            "id": 12579,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12578,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12609,
                                    "src": "5864:7:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12577,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5864:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5863:9:61"
                        },
                        "scope": 12856,
                        "src": "5725:337:61",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12818,
                            "nodeType": "Block",
                            "src": "6338:2149:61",
                            "statements": [
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12619,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 12617,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12612,
                                            "src": "6352:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12618,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6357:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "6352:6:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12623,
                                    "nodeType": "IfStatement",
                                    "src": "6348:45:61",
                                    "trueBody": {
                                        "id": 12622,
                                        "nodeType": "Block",
                                        "src": "6360:33:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "hexValue": "30",
                                                    "id": 12620,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "6381:1:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "functionReturnParameters": 12616,
                                                "id": 12621,
                                                "nodeType": "Return",
                                                "src": "6374:8:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "assignments": [
                                        12625
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 12625,
                                            "mutability": "mutable",
                                            "name": "result",
                                            "nameLocation": "7066:6:61",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 12818,
                                            "src": "7058:14:61",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 12624,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7058:7:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 12627,
                                    "initialValue": {
                                        "hexValue": "31",
                                        "id": 12626,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7075:1:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7058:18:61"
                                },
                                {
                                    "assignments": [
                                        12629
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 12629,
                                            "mutability": "mutable",
                                            "name": "x",
                                            "nameLocation": "7094:1:61",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 12818,
                                            "src": "7086:9:61",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 12628,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7086:7:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 12631,
                                    "initialValue": {
                                        "id": 12630,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12612,
                                        "src": "7098:1:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7086:13:61"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12636,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12634,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12632,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12629,
                                                "src": "7113:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">>",
                                            "rightExpression": {
                                                "hexValue": "313238",
                                                "id": 12633,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7118:3:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_128_by_1",
                                                    "typeString": "int_const 128"
                                                },
                                                "value": "128"
                                            },
                                            "src": "7113:8:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12635,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7124:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "7113:12:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12646,
                                    "nodeType": "IfStatement",
                                    "src": "7109:79:61",
                                    "trueBody": {
                                        "id": 12645,
                                        "nodeType": "Block",
                                        "src": "7127:61:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12639,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12637,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12629,
                                                        "src": "7141:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": ">>=",
                                                    "rightHandSide": {
                                                        "hexValue": "313238",
                                                        "id": 12638,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7147:3:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_128_by_1",
                                                            "typeString": "int_const 128"
                                                        },
                                                        "value": "128"
                                                    },
                                                    "src": "7141:9:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12640,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7141:9:61"
                                            },
                                            {
                                                "expression": {
                                                    "id": 12643,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12641,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12625,
                                                        "src": "7164:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "<<=",
                                                    "rightHandSide": {
                                                        "hexValue": "3634",
                                                        "id": 12642,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7175:2:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_64_by_1",
                                                            "typeString": "int_const 64"
                                                        },
                                                        "value": "64"
                                                    },
                                                    "src": "7164:13:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12644,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7164:13:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12651,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12649,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12647,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12629,
                                                "src": "7201:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">>",
                                            "rightExpression": {
                                                "hexValue": "3634",
                                                "id": 12648,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7206:2:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_64_by_1",
                                                    "typeString": "int_const 64"
                                                },
                                                "value": "64"
                                            },
                                            "src": "7201:7:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12650,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7211:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "7201:11:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12661,
                                    "nodeType": "IfStatement",
                                    "src": "7197:77:61",
                                    "trueBody": {
                                        "id": 12660,
                                        "nodeType": "Block",
                                        "src": "7214:60:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12654,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12652,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12629,
                                                        "src": "7228:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": ">>=",
                                                    "rightHandSide": {
                                                        "hexValue": "3634",
                                                        "id": 12653,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7234:2:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_64_by_1",
                                                            "typeString": "int_const 64"
                                                        },
                                                        "value": "64"
                                                    },
                                                    "src": "7228:8:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12655,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7228:8:61"
                                            },
                                            {
                                                "expression": {
                                                    "id": 12658,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12656,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12625,
                                                        "src": "7250:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "<<=",
                                                    "rightHandSide": {
                                                        "hexValue": "3332",
                                                        "id": 12657,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7261:2:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_32_by_1",
                                                            "typeString": "int_const 32"
                                                        },
                                                        "value": "32"
                                                    },
                                                    "src": "7250:13:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12659,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7250:13:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12666,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12664,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12662,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12629,
                                                "src": "7287:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">>",
                                            "rightExpression": {
                                                "hexValue": "3332",
                                                "id": 12663,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7292:2:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_32_by_1",
                                                    "typeString": "int_const 32"
                                                },
                                                "value": "32"
                                            },
                                            "src": "7287:7:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12665,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7297:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "7287:11:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12676,
                                    "nodeType": "IfStatement",
                                    "src": "7283:77:61",
                                    "trueBody": {
                                        "id": 12675,
                                        "nodeType": "Block",
                                        "src": "7300:60:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12669,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12667,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12629,
                                                        "src": "7314:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": ">>=",
                                                    "rightHandSide": {
                                                        "hexValue": "3332",
                                                        "id": 12668,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7320:2:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_32_by_1",
                                                            "typeString": "int_const 32"
                                                        },
                                                        "value": "32"
                                                    },
                                                    "src": "7314:8:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12670,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7314:8:61"
                                            },
                                            {
                                                "expression": {
                                                    "id": 12673,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12671,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12625,
                                                        "src": "7336:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "<<=",
                                                    "rightHandSide": {
                                                        "hexValue": "3136",
                                                        "id": 12672,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7347:2:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_16_by_1",
                                                            "typeString": "int_const 16"
                                                        },
                                                        "value": "16"
                                                    },
                                                    "src": "7336:13:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12674,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7336:13:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12681,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12679,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12677,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12629,
                                                "src": "7373:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">>",
                                            "rightExpression": {
                                                "hexValue": "3136",
                                                "id": 12678,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7378:2:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_16_by_1",
                                                    "typeString": "int_const 16"
                                                },
                                                "value": "16"
                                            },
                                            "src": "7373:7:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12680,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7383:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "7373:11:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12691,
                                    "nodeType": "IfStatement",
                                    "src": "7369:76:61",
                                    "trueBody": {
                                        "id": 12690,
                                        "nodeType": "Block",
                                        "src": "7386:59:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12684,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12682,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12629,
                                                        "src": "7400:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": ">>=",
                                                    "rightHandSide": {
                                                        "hexValue": "3136",
                                                        "id": 12683,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7406:2:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_16_by_1",
                                                            "typeString": "int_const 16"
                                                        },
                                                        "value": "16"
                                                    },
                                                    "src": "7400:8:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12685,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7400:8:61"
                                            },
                                            {
                                                "expression": {
                                                    "id": 12688,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12686,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12625,
                                                        "src": "7422:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "<<=",
                                                    "rightHandSide": {
                                                        "hexValue": "38",
                                                        "id": 12687,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7433:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_8_by_1",
                                                            "typeString": "int_const 8"
                                                        },
                                                        "value": "8"
                                                    },
                                                    "src": "7422:12:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12689,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7422:12:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12696,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12694,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12692,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12629,
                                                "src": "7458:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">>",
                                            "rightExpression": {
                                                "hexValue": "38",
                                                "id": 12693,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7463:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_8_by_1",
                                                    "typeString": "int_const 8"
                                                },
                                                "value": "8"
                                            },
                                            "src": "7458:6:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12695,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7467:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "7458:10:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12706,
                                    "nodeType": "IfStatement",
                                    "src": "7454:74:61",
                                    "trueBody": {
                                        "id": 12705,
                                        "nodeType": "Block",
                                        "src": "7470:58:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12699,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12697,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12629,
                                                        "src": "7484:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": ">>=",
                                                    "rightHandSide": {
                                                        "hexValue": "38",
                                                        "id": 12698,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7490:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_8_by_1",
                                                            "typeString": "int_const 8"
                                                        },
                                                        "value": "8"
                                                    },
                                                    "src": "7484:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12700,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7484:7:61"
                                            },
                                            {
                                                "expression": {
                                                    "id": 12703,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12701,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12625,
                                                        "src": "7505:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "<<=",
                                                    "rightHandSide": {
                                                        "hexValue": "34",
                                                        "id": 12702,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7516:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_4_by_1",
                                                            "typeString": "int_const 4"
                                                        },
                                                        "value": "4"
                                                    },
                                                    "src": "7505:12:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12704,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7505:12:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12711,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12709,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12707,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12629,
                                                "src": "7541:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">>",
                                            "rightExpression": {
                                                "hexValue": "34",
                                                "id": 12708,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7546:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_4_by_1",
                                                    "typeString": "int_const 4"
                                                },
                                                "value": "4"
                                            },
                                            "src": "7541:6:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12710,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7550:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "7541:10:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12721,
                                    "nodeType": "IfStatement",
                                    "src": "7537:74:61",
                                    "trueBody": {
                                        "id": 12720,
                                        "nodeType": "Block",
                                        "src": "7553:58:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12714,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12712,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12629,
                                                        "src": "7567:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": ">>=",
                                                    "rightHandSide": {
                                                        "hexValue": "34",
                                                        "id": 12713,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7573:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_4_by_1",
                                                            "typeString": "int_const 4"
                                                        },
                                                        "value": "4"
                                                    },
                                                    "src": "7567:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12715,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7567:7:61"
                                            },
                                            {
                                                "expression": {
                                                    "id": 12718,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12716,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12625,
                                                        "src": "7588:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "<<=",
                                                    "rightHandSide": {
                                                        "hexValue": "32",
                                                        "id": 12717,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7599:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_2_by_1",
                                                            "typeString": "int_const 2"
                                                        },
                                                        "value": "2"
                                                    },
                                                    "src": "7588:12:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12719,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7588:12:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12726,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12724,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12722,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12629,
                                                "src": "7624:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">>",
                                            "rightExpression": {
                                                "hexValue": "32",
                                                "id": 12723,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7629:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_2_by_1",
                                                    "typeString": "int_const 2"
                                                },
                                                "value": "2"
                                            },
                                            "src": "7624:6:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12725,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7633:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "7624:10:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12732,
                                    "nodeType": "IfStatement",
                                    "src": "7620:53:61",
                                    "trueBody": {
                                        "id": 12731,
                                        "nodeType": "Block",
                                        "src": "7636:37:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12729,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12727,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12625,
                                                        "src": "7650:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "<<=",
                                                    "rightHandSide": {
                                                        "hexValue": "31",
                                                        "id": 12728,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7661:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "7650:12:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12730,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7650:12:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "id": 12817,
                                    "nodeType": "UncheckedBlock",
                                    "src": "8073:408:61",
                                    "statements": [
                                        {
                                            "expression": {
                                                "id": 12742,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12733,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12625,
                                                    "src": "8097:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12741,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 12738,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 12734,
                                                                    "name": "result",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 12625,
                                                                    "src": "8107:6:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 12737,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 12735,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12612,
                                                                        "src": "8116:1:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "id": 12736,
                                                                        "name": "result",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12625,
                                                                        "src": "8120:6:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "8116:10:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "8107:19:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 12739,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "8106:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">>",
                                                    "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 12740,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8131:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "8106:26:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "8097:35:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12743,
                                            "nodeType": "ExpressionStatement",
                                            "src": "8097:35:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12753,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12744,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12625,
                                                    "src": "8146:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12752,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 12749,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 12745,
                                                                    "name": "result",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 12625,
                                                                    "src": "8156:6:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 12748,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 12746,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12612,
                                                                        "src": "8165:1:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "id": 12747,
                                                                        "name": "result",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12625,
                                                                        "src": "8169:6:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "8165:10:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "8156:19:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 12750,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "8155:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">>",
                                                    "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 12751,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8180:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "8155:26:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "8146:35:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12754,
                                            "nodeType": "ExpressionStatement",
                                            "src": "8146:35:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12764,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12755,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12625,
                                                    "src": "8195:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12763,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 12760,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 12756,
                                                                    "name": "result",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 12625,
                                                                    "src": "8205:6:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 12759,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 12757,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12612,
                                                                        "src": "8214:1:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "id": 12758,
                                                                        "name": "result",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12625,
                                                                        "src": "8218:6:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "8214:10:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "8205:19:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 12761,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "8204:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">>",
                                                    "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 12762,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8229:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "8204:26:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "8195:35:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12765,
                                            "nodeType": "ExpressionStatement",
                                            "src": "8195:35:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12775,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12766,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12625,
                                                    "src": "8244:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12774,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 12771,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 12767,
                                                                    "name": "result",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 12625,
                                                                    "src": "8254:6:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 12770,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 12768,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12612,
                                                                        "src": "8263:1:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "id": 12769,
                                                                        "name": "result",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12625,
                                                                        "src": "8267:6:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "8263:10:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "8254:19:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 12772,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "8253:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">>",
                                                    "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 12773,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8278:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "8253:26:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "8244:35:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12776,
                                            "nodeType": "ExpressionStatement",
                                            "src": "8244:35:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12786,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12777,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12625,
                                                    "src": "8293:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12785,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 12782,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 12778,
                                                                    "name": "result",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 12625,
                                                                    "src": "8303:6:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 12781,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 12779,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12612,
                                                                        "src": "8312:1:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "id": 12780,
                                                                        "name": "result",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12625,
                                                                        "src": "8316:6:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "8312:10:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "8303:19:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 12783,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "8302:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">>",
                                                    "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 12784,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8327:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "8302:26:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "8293:35:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12787,
                                            "nodeType": "ExpressionStatement",
                                            "src": "8293:35:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12797,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12788,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12625,
                                                    "src": "8342:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12796,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 12793,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 12789,
                                                                    "name": "result",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 12625,
                                                                    "src": "8352:6:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 12792,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 12790,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12612,
                                                                        "src": "8361:1:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "id": 12791,
                                                                        "name": "result",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12625,
                                                                        "src": "8365:6:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "8361:10:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "8352:19:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 12794,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "8351:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">>",
                                                    "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 12795,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8376:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "8351:26:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "8342:35:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12798,
                                            "nodeType": "ExpressionStatement",
                                            "src": "8342:35:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12808,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12799,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12625,
                                                    "src": "8391:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12807,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 12804,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 12800,
                                                                    "name": "result",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 12625,
                                                                    "src": "8401:6:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 12803,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 12801,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12612,
                                                                        "src": "8410:1:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "id": 12802,
                                                                        "name": "result",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12625,
                                                                        "src": "8414:6:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "8410:10:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "8401:19:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 12805,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "8400:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">>",
                                                    "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 12806,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8425:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "8400:26:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "8391:35:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12809,
                                            "nodeType": "ExpressionStatement",
                                            "src": "8391:35:61"
                                        },
                                        {
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 12811,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12625,
                                                        "src": "8451:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12814,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12812,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12612,
                                                            "src": "8459:1:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "/",
                                                        "rightExpression": {
                                                            "id": 12813,
                                                            "name": "result",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12625,
                                                            "src": "8463:6:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "8459:10:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "id": 12810,
                                                    "name": "min",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12395,
                                                    "src": "8447:3:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 12815,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "8447:23:61",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "functionReturnParameters": 12616,
                                            "id": 12816,
                                            "nodeType": "Return",
                                            "src": "8440:30:61"
                                        }
                                    ]
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12610,
                            "nodeType": "StructuredDocumentation",
                            "src": "6068:208:61",
                            "text": " @dev Returns the square root of a number. It the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."
                        },
                        "id": 12819,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "sqrt",
                        "nameLocation": "6290:4:61",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12613,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12612,
                                    "mutability": "mutable",
                                    "name": "a",
                                    "nameLocation": "6303:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12819,
                                    "src": "6295:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12611,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6295:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6294:11:61"
                        },
                        "returnParameters": {
                            "id": 12616,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12615,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12819,
                                    "src": "6329:7:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12614,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6329:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6328:9:61"
                        },
                        "scope": 12856,
                        "src": "6281:2206:61",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12854,
                            "nodeType": "Block",
                            "src": "8663:161:61",
                            "statements": [
                                {
                                    "assignments": [
                                        12831
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 12831,
                                            "mutability": "mutable",
                                            "name": "result",
                                            "nameLocation": "8681:6:61",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 12854,
                                            "src": "8673:14:61",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 12830,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "8673:7:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 12835,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 12833,
                                                "name": "a",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12822,
                                                "src": "8695:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 12832,
                                            "name": "sqrt",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                12819,
                                                12855
                                            ],
                                            "referencedDeclaration": 12819,
                                            "src": "8690:4:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 12834,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8690:7:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8673:24:61"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "id": 12845,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_enum$_Rounding_$12359",
                                                "typeString": "enum Math.Rounding"
                                            },
                                            "id": 12839,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12836,
                                                "name": "rounding",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12825,
                                                "src": "8711:8:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_Rounding_$12359",
                                                    "typeString": "enum Math.Rounding"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "expression": {
                                                    "id": 12837,
                                                    "name": "Rounding",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12359,
                                                    "src": "8723:8:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_enum$_Rounding_$12359_$",
                                                        "typeString": "type(enum Math.Rounding)"
                                                    }
                                                },
                                                "id": 12838,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberName": "Up",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12357,
                                                "src": "8723:11:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_Rounding_$12359",
                                                    "typeString": "enum Math.Rounding"
                                                }
                                            },
                                            "src": "8711:23:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12844,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 12842,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 12840,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12831,
                                                    "src": "8738:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "*",
                                                "rightExpression": {
                                                    "id": 12841,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12831,
                                                    "src": "8747:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "8738:15:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<",
                                            "rightExpression": {
                                                "id": 12843,
                                                "name": "a",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12822,
                                                "src": "8756:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "src": "8738:19:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "src": "8711:46:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12851,
                                    "nodeType": "IfStatement",
                                    "src": "8707:88:61",
                                    "trueBody": {
                                        "id": 12850,
                                        "nodeType": "Block",
                                        "src": "8759:36:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12848,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12846,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12831,
                                                        "src": "8773:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "hexValue": "31",
                                                        "id": 12847,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8783:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "8773:11:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12849,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8773:11:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "id": 12852,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12831,
                                        "src": "8811:6:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 12829,
                                    "id": 12853,
                                    "nodeType": "Return",
                                    "src": "8804:13:61"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12820,
                            "nodeType": "StructuredDocumentation",
                            "src": "8493:89:61",
                            "text": " @notice Calculates sqrt(a), following the selected rounding direction."
                        },
                        "id": 12855,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "sqrt",
                        "nameLocation": "8596:4:61",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12826,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12822,
                                    "mutability": "mutable",
                                    "name": "a",
                                    "nameLocation": "8609:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12855,
                                    "src": "8601:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12821,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8601:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12825,
                                    "mutability": "mutable",
                                    "name": "rounding",
                                    "nameLocation": "8621:8:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12855,
                                    "src": "8612:17:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Rounding_$12359",
                                        "typeString": "enum Math.Rounding"
                                    },
                                    "typeName": {
                                        "id": 12824,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 12823,
                                            "name": "Rounding",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 12359,
                                            "src": "8612:8:61"
                                        },
                                        "referencedDeclaration": 12359,
                                        "src": "8612:8:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_Rounding_$12359",
                                            "typeString": "enum Math.Rounding"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "8600:30:61"
                        },
                        "returnParameters": {
                            "id": 12829,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12828,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12855,
                                    "src": "8654:7:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12827,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8654:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "8653:9:61"
                        },
                        "scope": 12856,
                        "src": "8587:237:61",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    }
                ],
                "scope": 12857,
                "src": "202:8624:61",
                "usedErrors": []
            }
        ],
        "src": "103:8724:61"
    },
    "legacyAST": {
        "absolutePath": "@openzeppelin/contracts/utils/math/Math.sol",
        "exportedSymbols": {
            "Math": [
                12856
            ]
        },
        "id": 12857,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 12354,
                "literals": [
                    "solidity",
                    "^",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "103:23:61"
            },
            {
                "abstract": false,
                "baseContracts": [],
                "contractDependencies": [],
                "contractKind": "library",
                "documentation": {
                    "id": 12355,
                    "nodeType": "StructuredDocumentation",
                    "src": "128:73:61",
                    "text": " @dev Standard math utilities missing in the Solidity language."
                },
                "fullyImplemented": true,
                "id": 12856,
                "linearizedBaseContracts": [
                    12856
                ],
                "name": "Math",
                "nameLocation": "210:4:61",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "canonicalName": "Math.Rounding",
                        "id": 12359,
                        "members": [
                            {
                                "id": 12356,
                                "name": "Down",
                                "nameLocation": "245:4:61",
                                "nodeType": "EnumValue",
                                "src": "245:4:61"
                            },
                            {
                                "id": 12357,
                                "name": "Up",
                                "nameLocation": "287:2:61",
                                "nodeType": "EnumValue",
                                "src": "287:2:61"
                            },
                            {
                                "id": 12358,
                                "name": "Zero",
                                "nameLocation": "318:4:61",
                                "nodeType": "EnumValue",
                                "src": "318:4:61"
                            }
                        ],
                        "name": "Rounding",
                        "nameLocation": "226:8:61",
                        "nodeType": "EnumDefinition",
                        "src": "221:122:61"
                    },
                    {
                        "body": {
                            "id": 12376,
                            "nodeType": "Block",
                            "src": "480:38:61",
                            "statements": [
                                {
                                    "expression": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12371,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12369,
                                                "name": "a",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12362,
                                                "src": "497:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">=",
                                            "rightExpression": {
                                                "id": 12370,
                                                "name": "b",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12364,
                                                "src": "502:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "src": "497:6:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "falseExpression": {
                                            "id": 12373,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12364,
                                            "src": "510:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 12374,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "497:14:61",
                                        "trueExpression": {
                                            "id": 12372,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12362,
                                            "src": "506:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 12368,
                                    "id": 12375,
                                    "nodeType": "Return",
                                    "src": "490:21:61"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12360,
                            "nodeType": "StructuredDocumentation",
                            "src": "349:59:61",
                            "text": " @dev Returns the largest of two numbers."
                        },
                        "id": 12377,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "max",
                        "nameLocation": "422:3:61",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12365,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12362,
                                    "mutability": "mutable",
                                    "name": "a",
                                    "nameLocation": "434:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12377,
                                    "src": "426:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12361,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "426:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12364,
                                    "mutability": "mutable",
                                    "name": "b",
                                    "nameLocation": "445:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12377,
                                    "src": "437:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12363,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "437:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "425:22:61"
                        },
                        "returnParameters": {
                            "id": 12368,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12367,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12377,
                                    "src": "471:7:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12366,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "471:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "470:9:61"
                        },
                        "scope": 12856,
                        "src": "413:105:61",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12394,
                            "nodeType": "Block",
                            "src": "656:37:61",
                            "statements": [
                                {
                                    "expression": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12389,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12387,
                                                "name": "a",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12380,
                                                "src": "673:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<",
                                            "rightExpression": {
                                                "id": 12388,
                                                "name": "b",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12382,
                                                "src": "677:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "src": "673:5:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "falseExpression": {
                                            "id": 12391,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12382,
                                            "src": "685:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 12392,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "673:13:61",
                                        "trueExpression": {
                                            "id": 12390,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12380,
                                            "src": "681:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 12386,
                                    "id": 12393,
                                    "nodeType": "Return",
                                    "src": "666:20:61"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12378,
                            "nodeType": "StructuredDocumentation",
                            "src": "524:60:61",
                            "text": " @dev Returns the smallest of two numbers."
                        },
                        "id": 12395,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "min",
                        "nameLocation": "598:3:61",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12383,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12380,
                                    "mutability": "mutable",
                                    "name": "a",
                                    "nameLocation": "610:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12395,
                                    "src": "602:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12379,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "602:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12382,
                                    "mutability": "mutable",
                                    "name": "b",
                                    "nameLocation": "621:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12395,
                                    "src": "613:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12381,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "613:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "601:22:61"
                        },
                        "returnParameters": {
                            "id": 12386,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12385,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12395,
                                    "src": "647:7:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12384,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "647:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "646:9:61"
                        },
                        "scope": 12856,
                        "src": "589:104:61",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12417,
                            "nodeType": "Block",
                            "src": "877:82:61",
                            "statements": [
                                {
                                    "expression": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12415,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "components": [
                                                {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12407,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 12405,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12398,
                                                        "src": "932:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&",
                                                    "rightExpression": {
                                                        "id": 12406,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12400,
                                                        "src": "936:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "932:5:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 12408,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "931:7:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12414,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "components": [
                                                    {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12411,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12409,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12398,
                                                            "src": "942:1:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "^",
                                                        "rightExpression": {
                                                            "id": 12410,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12400,
                                                            "src": "946:1:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "942:5:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "id": 12412,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "941:7:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "/",
                                            "rightExpression": {
                                                "hexValue": "32",
                                                "id": 12413,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "951:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_2_by_1",
                                                    "typeString": "int_const 2"
                                                },
                                                "value": "2"
                                            },
                                            "src": "941:11:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "931:21:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 12404,
                                    "id": 12416,
                                    "nodeType": "Return",
                                    "src": "924:28:61"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12396,
                            "nodeType": "StructuredDocumentation",
                            "src": "699:102:61",
                            "text": " @dev Returns the average of two numbers. The result is rounded towards\n zero."
                        },
                        "id": 12418,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "average",
                        "nameLocation": "815:7:61",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12401,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12398,
                                    "mutability": "mutable",
                                    "name": "a",
                                    "nameLocation": "831:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12418,
                                    "src": "823:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12397,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "823:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12400,
                                    "mutability": "mutable",
                                    "name": "b",
                                    "nameLocation": "842:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12418,
                                    "src": "834:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12399,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "834:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "822:22:61"
                        },
                        "returnParameters": {
                            "id": 12404,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12403,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12418,
                                    "src": "868:7:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12402,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "868:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "867:9:61"
                        },
                        "scope": 12856,
                        "src": "806:153:61",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12442,
                            "nodeType": "Block",
                            "src": "1229:123:61",
                            "statements": [
                                {
                                    "expression": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12430,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12428,
                                                "name": "a",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12421,
                                                "src": "1317:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "hexValue": "30",
                                                "id": 12429,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1322:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            "src": "1317:6:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "falseExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12439,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 12437,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "components": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 12434,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 12432,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12421,
                                                                "src": "1331:1:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "-",
                                                            "rightExpression": {
                                                                "hexValue": "31",
                                                                "id": 12433,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1335:1:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                    "typeString": "int_const 1"
                                                                },
                                                                "value": "1"
                                                            },
                                                            "src": "1331:5:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "id": 12435,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "1330:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "/",
                                                "rightExpression": {
                                                    "id": 12436,
                                                    "name": "b",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12423,
                                                    "src": "1340:1:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "1330:11:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                                "hexValue": "31",
                                                "id": 12438,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1344:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                            },
                                            "src": "1330:15:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 12440,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "1317:28:61",
                                        "trueExpression": {
                                            "hexValue": "30",
                                            "id": 12431,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1326:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 12427,
                                    "id": 12441,
                                    "nodeType": "Return",
                                    "src": "1310:35:61"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12419,
                            "nodeType": "StructuredDocumentation",
                            "src": "965:188:61",
                            "text": " @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."
                        },
                        "id": 12443,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "ceilDiv",
                        "nameLocation": "1167:7:61",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12424,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12421,
                                    "mutability": "mutable",
                                    "name": "a",
                                    "nameLocation": "1183:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12443,
                                    "src": "1175:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12420,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1175:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12423,
                                    "mutability": "mutable",
                                    "name": "b",
                                    "nameLocation": "1194:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12443,
                                    "src": "1186:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12422,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1186:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1174:22:61"
                        },
                        "returnParameters": {
                            "id": 12427,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12426,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12443,
                                    "src": "1220:7:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12425,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1220:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1219:9:61"
                        },
                        "scope": 12856,
                        "src": "1158:194:61",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12564,
                            "nodeType": "Block",
                            "src": "1796:3797:61",
                            "statements": [
                                {
                                    "id": 12563,
                                    "nodeType": "UncheckedBlock",
                                    "src": "1806:3781:61",
                                    "statements": [
                                        {
                                            "assignments": [
                                                12456
                                            ],
                                            "declarations": [
                                                {
                                                    "constant": false,
                                                    "id": 12456,
                                                    "mutability": "mutable",
                                                    "name": "prod0",
                                                    "nameLocation": "2135:5:61",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 12563,
                                                    "src": "2127:13:61",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 12455,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "2127:7:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                }
                                            ],
                                            "id": 12457,
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "2127:13:61"
                                        },
                                        {
                                            "assignments": [
                                                12459
                                            ],
                                            "declarations": [
                                                {
                                                    "constant": false,
                                                    "id": 12459,
                                                    "mutability": "mutable",
                                                    "name": "prod1",
                                                    "nameLocation": "2207:5:61",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 12563,
                                                    "src": "2199:13:61",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 12458,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "2199:7:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                }
                                            ],
                                            "id": 12460,
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "2199:13:61"
                                        },
                                        {
                                            "AST": {
                                                "nodeType": "YulBlock",
                                                "src": "2279:157:61",
                                                "statements": [
                                                    {
                                                        "nodeType": "YulVariableDeclaration",
                                                        "src": "2297:30:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "x",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2314:1:61"
                                                                },
                                                                {
                                                                    "name": "y",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2317:1:61"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "2324:1:61",
                                                                            "type": "",
                                                                            "value": "0"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "not",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2320:3:61"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "2320:6:61"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "mulmod",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2307:6:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2307:20:61"
                                                        },
                                                        "variables": [
                                                            {
                                                                "name": "mm",
                                                                "nodeType": "YulTypedName",
                                                                "src": "2301:2:61",
                                                                "type": ""
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "2344:18:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "x",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2357:1:61"
                                                                },
                                                                {
                                                                    "name": "y",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2360:1:61"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "mul",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2353:3:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2353:9:61"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "prod0",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2344:5:61"
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "2379:43:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "mm",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2396:2:61"
                                                                        },
                                                                        {
                                                                            "name": "prod0",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2400:5:61"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "sub",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2392:3:61"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "2392:14:61"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "mm",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2411:2:61"
                                                                        },
                                                                        {
                                                                            "name": "prod0",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2415:5:61"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "lt",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2408:2:61"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "2408:13:61"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "sub",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2388:3:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2388:34:61"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "prod1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2379:5:61"
                                                            }
                                                        ]
                                                    }
                                                ]
                                            },
                                            "evmVersion": "london",
                                            "externalReferences": [
                                                {
                                                    "declaration": 12456,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "2344:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12456,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "2400:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12456,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "2415:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12459,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "2379:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12446,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "2314:1:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12446,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "2357:1:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12448,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "2317:1:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12448,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "2360:1:61",
                                                    "valueSize": 1
                                                }
                                            ],
                                            "id": 12461,
                                            "nodeType": "InlineAssembly",
                                            "src": "2270:166:61"
                                        },
                                        {
                                            "condition": {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 12464,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 12462,
                                                    "name": "prod1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12459,
                                                    "src": "2517:5:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "hexValue": "30",
                                                    "id": 12463,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "2526:1:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "src": "2517:10:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "id": 12470,
                                            "nodeType": "IfStatement",
                                            "src": "2513:75:61",
                                            "trueBody": {
                                                "id": 12469,
                                                "nodeType": "Block",
                                                "src": "2529:59:61",
                                                "statements": [
                                                    {
                                                        "expression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 12467,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 12465,
                                                                "name": "prod0",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12456,
                                                                "src": "2554:5:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                                "id": 12466,
                                                                "name": "denominator",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12450,
                                                                "src": "2562:11:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "2554:19:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "functionReturnParameters": 12454,
                                                        "id": 12468,
                                                        "nodeType": "Return",
                                                        "src": "2547:26:61"
                                                    }
                                                ]
                                            }
                                        },
                                        {
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12474,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12472,
                                                            "name": "denominator",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12450,
                                                            "src": "2698:11:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "id": 12473,
                                                            "name": "prod1",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12459,
                                                            "src": "2712:5:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "2698:19:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    ],
                                                    "id": 12471,
                                                    "name": "require",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [
                                                        4294967278,
                                                        4294967278
                                                    ],
                                                    "referencedDeclaration": 4294967278,
                                                    "src": "2690:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                                        "typeString": "function (bool) pure"
                                                    }
                                                },
                                                "id": 12475,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2690:28:61",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_tuple$__$",
                                                    "typeString": "tuple()"
                                                }
                                            },
                                            "id": 12476,
                                            "nodeType": "ExpressionStatement",
                                            "src": "2690:28:61"
                                        },
                                        {
                                            "assignments": [
                                                12478
                                            ],
                                            "declarations": [
                                                {
                                                    "constant": false,
                                                    "id": 12478,
                                                    "mutability": "mutable",
                                                    "name": "remainder",
                                                    "nameLocation": "2982:9:61",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 12563,
                                                    "src": "2974:17:61",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 12477,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "2974:7:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                }
                                            ],
                                            "id": 12479,
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "2974:17:61"
                                        },
                                        {
                                            "AST": {
                                                "nodeType": "YulBlock",
                                                "src": "3014:291:61",
                                                "statements": [
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "3083:38:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "x",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3103:1:61"
                                                                },
                                                                {
                                                                    "name": "y",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3106:1:61"
                                                                },
                                                                {
                                                                    "name": "denominator",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3109:11:61"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "mulmod",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3096:6:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3096:25:61"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "remainder",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3083:9:61"
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "3203:41:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "prod1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3216:5:61"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "remainder",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3226:9:61"
                                                                        },
                                                                        {
                                                                            "name": "prod0",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3237:5:61"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "gt",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3223:2:61"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "3223:20:61"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "sub",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3212:3:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3212:32:61"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "prod1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3203:5:61"
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "3261:30:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "prod0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3274:5:61"
                                                                },
                                                                {
                                                                    "name": "remainder",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3281:9:61"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "sub",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3270:3:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3270:21:61"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "prod0",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3261:5:61"
                                                            }
                                                        ]
                                                    }
                                                ]
                                            },
                                            "evmVersion": "london",
                                            "externalReferences": [
                                                {
                                                    "declaration": 12450,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3109:11:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12456,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3237:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12456,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3261:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12456,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3274:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12459,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3203:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12459,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3216:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12478,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3083:9:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12478,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3226:9:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12478,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3281:9:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12446,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3103:1:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12448,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3106:1:61",
                                                    "valueSize": 1
                                                }
                                            ],
                                            "id": 12480,
                                            "nodeType": "InlineAssembly",
                                            "src": "3005:300:61"
                                        },
                                        {
                                            "assignments": [
                                                12482
                                            ],
                                            "declarations": [
                                                {
                                                    "constant": false,
                                                    "id": 12482,
                                                    "mutability": "mutable",
                                                    "name": "twos",
                                                    "nameLocation": "3620:4:61",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 12563,
                                                    "src": "3612:12:61",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 12481,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "3612:7:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                }
                                            ],
                                            "id": 12490,
                                            "initialValue": {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 12489,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 12483,
                                                    "name": "denominator",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12450,
                                                    "src": "3627:11:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "&",
                                                "rightExpression": {
                                                    "components": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 12487,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 12485,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "UnaryOperation",
                                                                "operator": "~",
                                                                "prefix": true,
                                                                "src": "3642:12:61",
                                                                "subExpression": {
                                                                    "id": 12484,
                                                                    "name": "denominator",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 12450,
                                                                    "src": "3643:11:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "+",
                                                            "rightExpression": {
                                                                "hexValue": "31",
                                                                "id": 12486,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "3657:1:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                    "typeString": "int_const 1"
                                                                },
                                                                "value": "1"
                                                            },
                                                            "src": "3642:16:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "id": 12488,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "3641:18:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "3627:32:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "3612:47:61"
                                        },
                                        {
                                            "AST": {
                                                "nodeType": "YulBlock",
                                                "src": "3682:362:61",
                                                "statements": [
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "3747:37:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "denominator",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3766:11:61"
                                                                },
                                                                {
                                                                    "name": "twos",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3779:4:61"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "div",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3762:3:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3762:22:61"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "denominator",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3747:11:61"
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "3851:25:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "prod0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3864:5:61"
                                                                },
                                                                {
                                                                    "name": "twos",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3871:4:61"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "div",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3860:3:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3860:16:61"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "prod0",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3851:5:61"
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "3991:39:61",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4011:1:61",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "name": "twos",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4014:4:61"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "sub",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4007:3:61"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4007:12:61"
                                                                        },
                                                                        {
                                                                            "name": "twos",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4021:4:61"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "div",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4003:3:61"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "4003:23:61"
                                                                },
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "4028:1:61",
                                                                    "type": "",
                                                                    "value": "1"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3999:3:61"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3999:31:61"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "twos",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3991:4:61"
                                                            }
                                                        ]
                                                    }
                                                ]
                                            },
                                            "evmVersion": "london",
                                            "externalReferences": [
                                                {
                                                    "declaration": 12450,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3747:11:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12450,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3766:11:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12456,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3851:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12456,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3864:5:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12482,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3779:4:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12482,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3871:4:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12482,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "3991:4:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12482,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "4014:4:61",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 12482,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "4021:4:61",
                                                    "valueSize": 1
                                                }
                                            ],
                                            "id": 12491,
                                            "nodeType": "InlineAssembly",
                                            "src": "3673:371:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12496,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12492,
                                                    "name": "prod0",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12456,
                                                    "src": "4110:5:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "|=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12495,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 12493,
                                                        "name": "prod1",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12459,
                                                        "src": "4119:5:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "*",
                                                    "rightExpression": {
                                                        "id": 12494,
                                                        "name": "twos",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12482,
                                                        "src": "4127:4:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4119:12:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "4110:21:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12497,
                                            "nodeType": "ExpressionStatement",
                                            "src": "4110:21:61"
                                        },
                                        {
                                            "assignments": [
                                                12499
                                            ],
                                            "declarations": [
                                                {
                                                    "constant": false,
                                                    "id": 12499,
                                                    "mutability": "mutable",
                                                    "name": "inverse",
                                                    "nameLocation": "4457:7:61",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 12563,
                                                    "src": "4449:15:61",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 12498,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "4449:7:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                }
                                            ],
                                            "id": 12506,
                                            "initialValue": {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 12505,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "components": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 12502,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "hexValue": "33",
                                                                "id": 12500,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "4468:1:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_3_by_1",
                                                                    "typeString": "int_const 3"
                                                                },
                                                                "value": "3"
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "*",
                                                            "rightExpression": {
                                                                "id": 12501,
                                                                "name": "denominator",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 12450,
                                                                "src": "4472:11:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "4468:15:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "id": 12503,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "4467:17:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "^",
                                                "rightExpression": {
                                                    "hexValue": "32",
                                                    "id": 12504,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "4487:1:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_2_by_1",
                                                        "typeString": "int_const 2"
                                                    },
                                                    "value": "2"
                                                },
                                                "src": "4467:21:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "4449:39:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12513,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12507,
                                                    "name": "inverse",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12499,
                                                    "src": "4705:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "*=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12512,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "hexValue": "32",
                                                        "id": 12508,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4716:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_2_by_1",
                                                            "typeString": "int_const 2"
                                                        },
                                                        "value": "2"
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12511,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12509,
                                                            "name": "denominator",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12450,
                                                            "src": "4720:11:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "id": 12510,
                                                            "name": "inverse",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12499,
                                                            "src": "4734:7:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "4720:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4716:25:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "4705:36:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12514,
                                            "nodeType": "ExpressionStatement",
                                            "src": "4705:36:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12521,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12515,
                                                    "name": "inverse",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12499,
                                                    "src": "4774:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "*=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12520,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "hexValue": "32",
                                                        "id": 12516,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4785:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_2_by_1",
                                                            "typeString": "int_const 2"
                                                        },
                                                        "value": "2"
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12519,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12517,
                                                            "name": "denominator",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12450,
                                                            "src": "4789:11:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "id": 12518,
                                                            "name": "inverse",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12499,
                                                            "src": "4803:7:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "4789:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4785:25:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "4774:36:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12522,
                                            "nodeType": "ExpressionStatement",
                                            "src": "4774:36:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12529,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12523,
                                                    "name": "inverse",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12499,
                                                    "src": "4844:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "*=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12528,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "hexValue": "32",
                                                        "id": 12524,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4855:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_2_by_1",
                                                            "typeString": "int_const 2"
                                                        },
                                                        "value": "2"
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12527,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12525,
                                                            "name": "denominator",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12450,
                                                            "src": "4859:11:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "id": 12526,
                                                            "name": "inverse",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12499,
                                                            "src": "4873:7:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "4859:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4855:25:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "4844:36:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12530,
                                            "nodeType": "ExpressionStatement",
                                            "src": "4844:36:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12537,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12531,
                                                    "name": "inverse",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12499,
                                                    "src": "4914:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "*=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12536,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "hexValue": "32",
                                                        "id": 12532,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4925:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_2_by_1",
                                                            "typeString": "int_const 2"
                                                        },
                                                        "value": "2"
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12535,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12533,
                                                            "name": "denominator",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12450,
                                                            "src": "4929:11:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "id": 12534,
                                                            "name": "inverse",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12499,
                                                            "src": "4943:7:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "4929:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4925:25:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "4914:36:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12538,
                                            "nodeType": "ExpressionStatement",
                                            "src": "4914:36:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12545,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12539,
                                                    "name": "inverse",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12499,
                                                    "src": "4984:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "*=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12544,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "hexValue": "32",
                                                        "id": 12540,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "4995:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_2_by_1",
                                                            "typeString": "int_const 2"
                                                        },
                                                        "value": "2"
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12543,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12541,
                                                            "name": "denominator",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12450,
                                                            "src": "4999:11:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "id": 12542,
                                                            "name": "inverse",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12499,
                                                            "src": "5013:7:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "4999:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4995:25:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "4984:36:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12546,
                                            "nodeType": "ExpressionStatement",
                                            "src": "4984:36:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12553,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12547,
                                                    "name": "inverse",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12499,
                                                    "src": "5055:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "*=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12552,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "hexValue": "32",
                                                        "id": 12548,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "5066:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_2_by_1",
                                                            "typeString": "int_const 2"
                                                        },
                                                        "value": "2"
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12551,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12549,
                                                            "name": "denominator",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12450,
                                                            "src": "5070:11:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "id": 12550,
                                                            "name": "inverse",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12499,
                                                            "src": "5084:7:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "5070:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5066:25:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "5055:36:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12554,
                                            "nodeType": "ExpressionStatement",
                                            "src": "5055:36:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12559,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12555,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12453,
                                                    "src": "5525:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12558,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 12556,
                                                        "name": "prod0",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12456,
                                                        "src": "5534:5:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "*",
                                                    "rightExpression": {
                                                        "id": 12557,
                                                        "name": "inverse",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12499,
                                                        "src": "5542:7:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5534:15:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "5525:24:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12560,
                                            "nodeType": "ExpressionStatement",
                                            "src": "5525:24:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12561,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12453,
                                                "src": "5570:6:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "functionReturnParameters": 12454,
                                            "id": 12562,
                                            "nodeType": "Return",
                                            "src": "5563:13:61"
                                        }
                                    ]
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12444,
                            "nodeType": "StructuredDocumentation",
                            "src": "1358:305:61",
                            "text": " @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."
                        },
                        "id": 12565,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "mulDiv",
                        "nameLocation": "1677:6:61",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12451,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12446,
                                    "mutability": "mutable",
                                    "name": "x",
                                    "nameLocation": "1701:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12565,
                                    "src": "1693:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12445,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1693:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12448,
                                    "mutability": "mutable",
                                    "name": "y",
                                    "nameLocation": "1720:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12565,
                                    "src": "1712:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12447,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1712:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12450,
                                    "mutability": "mutable",
                                    "name": "denominator",
                                    "nameLocation": "1739:11:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12565,
                                    "src": "1731:19:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12449,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1731:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1683:73:61"
                        },
                        "returnParameters": {
                            "id": 12454,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12453,
                                    "mutability": "mutable",
                                    "name": "result",
                                    "nameLocation": "1788:6:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12565,
                                    "src": "1780:14:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12452,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1780:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1779:16:61"
                        },
                        "scope": 12856,
                        "src": "1668:3925:61",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12608,
                            "nodeType": "Block",
                            "src": "5873:189:61",
                            "statements": [
                                {
                                    "assignments": [
                                        12581
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 12581,
                                            "mutability": "mutable",
                                            "name": "result",
                                            "nameLocation": "5891:6:61",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 12608,
                                            "src": "5883:14:61",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 12580,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5883:7:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 12587,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 12583,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12568,
                                                "src": "5907:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 12584,
                                                "name": "y",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12570,
                                                "src": "5910:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 12585,
                                                "name": "denominator",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12572,
                                                "src": "5913:11:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 12582,
                                            "name": "mulDiv",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                12565,
                                                12609
                                            ],
                                            "referencedDeclaration": 12565,
                                            "src": "5900:6:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 12586,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5900:25:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5883:42:61"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "id": 12599,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_enum$_Rounding_$12359",
                                                "typeString": "enum Math.Rounding"
                                            },
                                            "id": 12591,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12588,
                                                "name": "rounding",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12575,
                                                "src": "5939:8:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_Rounding_$12359",
                                                    "typeString": "enum Math.Rounding"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "expression": {
                                                    "id": 12589,
                                                    "name": "Rounding",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12359,
                                                    "src": "5951:8:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_enum$_Rounding_$12359_$",
                                                        "typeString": "type(enum Math.Rounding)"
                                                    }
                                                },
                                                "id": 12590,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberName": "Up",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12357,
                                                "src": "5951:11:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_Rounding_$12359",
                                                    "typeString": "enum Math.Rounding"
                                                }
                                            },
                                            "src": "5939:23:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12598,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "arguments": [
                                                    {
                                                        "id": 12593,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12568,
                                                        "src": "5973:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "id": 12594,
                                                        "name": "y",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12570,
                                                        "src": "5976:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "id": 12595,
                                                        "name": "denominator",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12572,
                                                        "src": "5979:11:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "id": 12592,
                                                    "name": "mulmod",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967280,
                                                    "src": "5966:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 12596,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5966:25:61",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">",
                                            "rightExpression": {
                                                "hexValue": "30",
                                                "id": 12597,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5994:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            "src": "5966:29:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "src": "5939:56:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12605,
                                    "nodeType": "IfStatement",
                                    "src": "5935:98:61",
                                    "trueBody": {
                                        "id": 12604,
                                        "nodeType": "Block",
                                        "src": "5997:36:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12602,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12600,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12581,
                                                        "src": "6011:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "hexValue": "31",
                                                        "id": 12601,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "6021:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "6011:11:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12603,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6011:11:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "id": 12606,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12581,
                                        "src": "6049:6:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 12579,
                                    "id": 12607,
                                    "nodeType": "Return",
                                    "src": "6042:13:61"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12566,
                            "nodeType": "StructuredDocumentation",
                            "src": "5599:121:61",
                            "text": " @notice Calculates x * y / denominator with full precision, following the selected rounding direction."
                        },
                        "id": 12609,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "mulDiv",
                        "nameLocation": "5734:6:61",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12576,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12568,
                                    "mutability": "mutable",
                                    "name": "x",
                                    "nameLocation": "5758:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12609,
                                    "src": "5750:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12567,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5750:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12570,
                                    "mutability": "mutable",
                                    "name": "y",
                                    "nameLocation": "5777:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12609,
                                    "src": "5769:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12569,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5769:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12572,
                                    "mutability": "mutable",
                                    "name": "denominator",
                                    "nameLocation": "5796:11:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12609,
                                    "src": "5788:19:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12571,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5788:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12575,
                                    "mutability": "mutable",
                                    "name": "rounding",
                                    "nameLocation": "5826:8:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12609,
                                    "src": "5817:17:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Rounding_$12359",
                                        "typeString": "enum Math.Rounding"
                                    },
                                    "typeName": {
                                        "id": 12574,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 12573,
                                            "name": "Rounding",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 12359,
                                            "src": "5817:8:61"
                                        },
                                        "referencedDeclaration": 12359,
                                        "src": "5817:8:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_Rounding_$12359",
                                            "typeString": "enum Math.Rounding"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5740:100:61"
                        },
                        "returnParameters": {
                            "id": 12579,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12578,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12609,
                                    "src": "5864:7:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12577,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5864:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5863:9:61"
                        },
                        "scope": 12856,
                        "src": "5725:337:61",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12818,
                            "nodeType": "Block",
                            "src": "6338:2149:61",
                            "statements": [
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12619,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 12617,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12612,
                                            "src": "6352:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12618,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6357:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "6352:6:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12623,
                                    "nodeType": "IfStatement",
                                    "src": "6348:45:61",
                                    "trueBody": {
                                        "id": 12622,
                                        "nodeType": "Block",
                                        "src": "6360:33:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "hexValue": "30",
                                                    "id": 12620,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "6381:1:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "functionReturnParameters": 12616,
                                                "id": 12621,
                                                "nodeType": "Return",
                                                "src": "6374:8:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "assignments": [
                                        12625
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 12625,
                                            "mutability": "mutable",
                                            "name": "result",
                                            "nameLocation": "7066:6:61",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 12818,
                                            "src": "7058:14:61",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 12624,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7058:7:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 12627,
                                    "initialValue": {
                                        "hexValue": "31",
                                        "id": 12626,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7075:1:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7058:18:61"
                                },
                                {
                                    "assignments": [
                                        12629
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 12629,
                                            "mutability": "mutable",
                                            "name": "x",
                                            "nameLocation": "7094:1:61",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 12818,
                                            "src": "7086:9:61",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 12628,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7086:7:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 12631,
                                    "initialValue": {
                                        "id": 12630,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12612,
                                        "src": "7098:1:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7086:13:61"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12636,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12634,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12632,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12629,
                                                "src": "7113:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">>",
                                            "rightExpression": {
                                                "hexValue": "313238",
                                                "id": 12633,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7118:3:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_128_by_1",
                                                    "typeString": "int_const 128"
                                                },
                                                "value": "128"
                                            },
                                            "src": "7113:8:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12635,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7124:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "7113:12:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12646,
                                    "nodeType": "IfStatement",
                                    "src": "7109:79:61",
                                    "trueBody": {
                                        "id": 12645,
                                        "nodeType": "Block",
                                        "src": "7127:61:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12639,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12637,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12629,
                                                        "src": "7141:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": ">>=",
                                                    "rightHandSide": {
                                                        "hexValue": "313238",
                                                        "id": 12638,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7147:3:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_128_by_1",
                                                            "typeString": "int_const 128"
                                                        },
                                                        "value": "128"
                                                    },
                                                    "src": "7141:9:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12640,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7141:9:61"
                                            },
                                            {
                                                "expression": {
                                                    "id": 12643,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12641,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12625,
                                                        "src": "7164:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "<<=",
                                                    "rightHandSide": {
                                                        "hexValue": "3634",
                                                        "id": 12642,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7175:2:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_64_by_1",
                                                            "typeString": "int_const 64"
                                                        },
                                                        "value": "64"
                                                    },
                                                    "src": "7164:13:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12644,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7164:13:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12651,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12649,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12647,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12629,
                                                "src": "7201:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">>",
                                            "rightExpression": {
                                                "hexValue": "3634",
                                                "id": 12648,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7206:2:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_64_by_1",
                                                    "typeString": "int_const 64"
                                                },
                                                "value": "64"
                                            },
                                            "src": "7201:7:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12650,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7211:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "7201:11:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12661,
                                    "nodeType": "IfStatement",
                                    "src": "7197:77:61",
                                    "trueBody": {
                                        "id": 12660,
                                        "nodeType": "Block",
                                        "src": "7214:60:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12654,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12652,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12629,
                                                        "src": "7228:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": ">>=",
                                                    "rightHandSide": {
                                                        "hexValue": "3634",
                                                        "id": 12653,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7234:2:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_64_by_1",
                                                            "typeString": "int_const 64"
                                                        },
                                                        "value": "64"
                                                    },
                                                    "src": "7228:8:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12655,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7228:8:61"
                                            },
                                            {
                                                "expression": {
                                                    "id": 12658,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12656,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12625,
                                                        "src": "7250:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "<<=",
                                                    "rightHandSide": {
                                                        "hexValue": "3332",
                                                        "id": 12657,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7261:2:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_32_by_1",
                                                            "typeString": "int_const 32"
                                                        },
                                                        "value": "32"
                                                    },
                                                    "src": "7250:13:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12659,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7250:13:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12666,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12664,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12662,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12629,
                                                "src": "7287:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">>",
                                            "rightExpression": {
                                                "hexValue": "3332",
                                                "id": 12663,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7292:2:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_32_by_1",
                                                    "typeString": "int_const 32"
                                                },
                                                "value": "32"
                                            },
                                            "src": "7287:7:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12665,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7297:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "7287:11:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12676,
                                    "nodeType": "IfStatement",
                                    "src": "7283:77:61",
                                    "trueBody": {
                                        "id": 12675,
                                        "nodeType": "Block",
                                        "src": "7300:60:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12669,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12667,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12629,
                                                        "src": "7314:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": ">>=",
                                                    "rightHandSide": {
                                                        "hexValue": "3332",
                                                        "id": 12668,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7320:2:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_32_by_1",
                                                            "typeString": "int_const 32"
                                                        },
                                                        "value": "32"
                                                    },
                                                    "src": "7314:8:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12670,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7314:8:61"
                                            },
                                            {
                                                "expression": {
                                                    "id": 12673,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12671,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12625,
                                                        "src": "7336:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "<<=",
                                                    "rightHandSide": {
                                                        "hexValue": "3136",
                                                        "id": 12672,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7347:2:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_16_by_1",
                                                            "typeString": "int_const 16"
                                                        },
                                                        "value": "16"
                                                    },
                                                    "src": "7336:13:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12674,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7336:13:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12681,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12679,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12677,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12629,
                                                "src": "7373:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">>",
                                            "rightExpression": {
                                                "hexValue": "3136",
                                                "id": 12678,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7378:2:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_16_by_1",
                                                    "typeString": "int_const 16"
                                                },
                                                "value": "16"
                                            },
                                            "src": "7373:7:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12680,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7383:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "7373:11:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12691,
                                    "nodeType": "IfStatement",
                                    "src": "7369:76:61",
                                    "trueBody": {
                                        "id": 12690,
                                        "nodeType": "Block",
                                        "src": "7386:59:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12684,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12682,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12629,
                                                        "src": "7400:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": ">>=",
                                                    "rightHandSide": {
                                                        "hexValue": "3136",
                                                        "id": 12683,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7406:2:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_16_by_1",
                                                            "typeString": "int_const 16"
                                                        },
                                                        "value": "16"
                                                    },
                                                    "src": "7400:8:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12685,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7400:8:61"
                                            },
                                            {
                                                "expression": {
                                                    "id": 12688,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12686,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12625,
                                                        "src": "7422:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "<<=",
                                                    "rightHandSide": {
                                                        "hexValue": "38",
                                                        "id": 12687,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7433:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_8_by_1",
                                                            "typeString": "int_const 8"
                                                        },
                                                        "value": "8"
                                                    },
                                                    "src": "7422:12:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12689,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7422:12:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12696,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12694,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12692,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12629,
                                                "src": "7458:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">>",
                                            "rightExpression": {
                                                "hexValue": "38",
                                                "id": 12693,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7463:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_8_by_1",
                                                    "typeString": "int_const 8"
                                                },
                                                "value": "8"
                                            },
                                            "src": "7458:6:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12695,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7467:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "7458:10:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12706,
                                    "nodeType": "IfStatement",
                                    "src": "7454:74:61",
                                    "trueBody": {
                                        "id": 12705,
                                        "nodeType": "Block",
                                        "src": "7470:58:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12699,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12697,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12629,
                                                        "src": "7484:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": ">>=",
                                                    "rightHandSide": {
                                                        "hexValue": "38",
                                                        "id": 12698,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7490:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_8_by_1",
                                                            "typeString": "int_const 8"
                                                        },
                                                        "value": "8"
                                                    },
                                                    "src": "7484:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12700,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7484:7:61"
                                            },
                                            {
                                                "expression": {
                                                    "id": 12703,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12701,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12625,
                                                        "src": "7505:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "<<=",
                                                    "rightHandSide": {
                                                        "hexValue": "34",
                                                        "id": 12702,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7516:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_4_by_1",
                                                            "typeString": "int_const 4"
                                                        },
                                                        "value": "4"
                                                    },
                                                    "src": "7505:12:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12704,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7505:12:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12711,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12709,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12707,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12629,
                                                "src": "7541:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">>",
                                            "rightExpression": {
                                                "hexValue": "34",
                                                "id": 12708,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7546:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_4_by_1",
                                                    "typeString": "int_const 4"
                                                },
                                                "value": "4"
                                            },
                                            "src": "7541:6:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12710,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7550:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "7541:10:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12721,
                                    "nodeType": "IfStatement",
                                    "src": "7537:74:61",
                                    "trueBody": {
                                        "id": 12720,
                                        "nodeType": "Block",
                                        "src": "7553:58:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12714,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12712,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12629,
                                                        "src": "7567:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": ">>=",
                                                    "rightHandSide": {
                                                        "hexValue": "34",
                                                        "id": 12713,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7573:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_4_by_1",
                                                            "typeString": "int_const 4"
                                                        },
                                                        "value": "4"
                                                    },
                                                    "src": "7567:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12715,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7567:7:61"
                                            },
                                            {
                                                "expression": {
                                                    "id": 12718,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12716,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12625,
                                                        "src": "7588:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "<<=",
                                                    "rightHandSide": {
                                                        "hexValue": "32",
                                                        "id": 12717,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7599:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_2_by_1",
                                                            "typeString": "int_const 2"
                                                        },
                                                        "value": "2"
                                                    },
                                                    "src": "7588:12:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12719,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7588:12:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 12726,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12724,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12722,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12629,
                                                "src": "7624:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": ">>",
                                            "rightExpression": {
                                                "hexValue": "32",
                                                "id": 12723,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7629:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_2_by_1",
                                                    "typeString": "int_const 2"
                                                },
                                                "value": "2"
                                            },
                                            "src": "7624:6:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 12725,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7633:1:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "7624:10:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12732,
                                    "nodeType": "IfStatement",
                                    "src": "7620:53:61",
                                    "trueBody": {
                                        "id": 12731,
                                        "nodeType": "Block",
                                        "src": "7636:37:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12729,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12727,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12625,
                                                        "src": "7650:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "<<=",
                                                    "rightHandSide": {
                                                        "hexValue": "31",
                                                        "id": 12728,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7661:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "7650:12:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12730,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7650:12:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "id": 12817,
                                    "nodeType": "UncheckedBlock",
                                    "src": "8073:408:61",
                                    "statements": [
                                        {
                                            "expression": {
                                                "id": 12742,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12733,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12625,
                                                    "src": "8097:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12741,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 12738,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 12734,
                                                                    "name": "result",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 12625,
                                                                    "src": "8107:6:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 12737,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 12735,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12612,
                                                                        "src": "8116:1:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "id": 12736,
                                                                        "name": "result",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12625,
                                                                        "src": "8120:6:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "8116:10:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "8107:19:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 12739,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "8106:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">>",
                                                    "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 12740,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8131:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "8106:26:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "8097:35:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12743,
                                            "nodeType": "ExpressionStatement",
                                            "src": "8097:35:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12753,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12744,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12625,
                                                    "src": "8146:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12752,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 12749,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 12745,
                                                                    "name": "result",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 12625,
                                                                    "src": "8156:6:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 12748,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 12746,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12612,
                                                                        "src": "8165:1:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "id": 12747,
                                                                        "name": "result",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12625,
                                                                        "src": "8169:6:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "8165:10:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "8156:19:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 12750,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "8155:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">>",
                                                    "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 12751,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8180:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "8155:26:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "8146:35:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12754,
                                            "nodeType": "ExpressionStatement",
                                            "src": "8146:35:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12764,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12755,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12625,
                                                    "src": "8195:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12763,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 12760,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 12756,
                                                                    "name": "result",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 12625,
                                                                    "src": "8205:6:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 12759,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 12757,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12612,
                                                                        "src": "8214:1:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "id": 12758,
                                                                        "name": "result",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12625,
                                                                        "src": "8218:6:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "8214:10:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "8205:19:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 12761,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "8204:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">>",
                                                    "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 12762,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8229:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "8204:26:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "8195:35:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12765,
                                            "nodeType": "ExpressionStatement",
                                            "src": "8195:35:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12775,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12766,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12625,
                                                    "src": "8244:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12774,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 12771,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 12767,
                                                                    "name": "result",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 12625,
                                                                    "src": "8254:6:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 12770,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 12768,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12612,
                                                                        "src": "8263:1:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "id": 12769,
                                                                        "name": "result",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12625,
                                                                        "src": "8267:6:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "8263:10:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "8254:19:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 12772,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "8253:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">>",
                                                    "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 12773,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8278:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "8253:26:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "8244:35:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12776,
                                            "nodeType": "ExpressionStatement",
                                            "src": "8244:35:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12786,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12777,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12625,
                                                    "src": "8293:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12785,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 12782,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 12778,
                                                                    "name": "result",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 12625,
                                                                    "src": "8303:6:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 12781,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 12779,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12612,
                                                                        "src": "8312:1:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "id": 12780,
                                                                        "name": "result",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12625,
                                                                        "src": "8316:6:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "8312:10:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "8303:19:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 12783,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "8302:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">>",
                                                    "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 12784,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8327:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "8302:26:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "8293:35:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12787,
                                            "nodeType": "ExpressionStatement",
                                            "src": "8293:35:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12797,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12788,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12625,
                                                    "src": "8342:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12796,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 12793,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 12789,
                                                                    "name": "result",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 12625,
                                                                    "src": "8352:6:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 12792,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 12790,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12612,
                                                                        "src": "8361:1:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "id": 12791,
                                                                        "name": "result",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12625,
                                                                        "src": "8365:6:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "8361:10:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "8352:19:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 12794,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "8351:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">>",
                                                    "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 12795,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8376:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "8351:26:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "8342:35:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12798,
                                            "nodeType": "ExpressionStatement",
                                            "src": "8342:35:61"
                                        },
                                        {
                                            "expression": {
                                                "id": 12808,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 12799,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12625,
                                                    "src": "8391:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 12807,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 12804,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 12800,
                                                                    "name": "result",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 12625,
                                                                    "src": "8401:6:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 12803,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 12801,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12612,
                                                                        "src": "8410:1:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "id": 12802,
                                                                        "name": "result",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 12625,
                                                                        "src": "8414:6:61",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "8410:10:61",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "8401:19:61",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 12805,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "8400:21:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">>",
                                                    "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 12806,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8425:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "8400:26:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "8391:35:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 12809,
                                            "nodeType": "ExpressionStatement",
                                            "src": "8391:35:61"
                                        },
                                        {
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 12811,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12625,
                                                        "src": "8451:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 12814,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 12812,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12612,
                                                            "src": "8459:1:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "/",
                                                        "rightExpression": {
                                                            "id": 12813,
                                                            "name": "result",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 12625,
                                                            "src": "8463:6:61",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "8459:10:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "id": 12810,
                                                    "name": "min",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12395,
                                                    "src": "8447:3:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 12815,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "8447:23:61",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "functionReturnParameters": 12616,
                                            "id": 12816,
                                            "nodeType": "Return",
                                            "src": "8440:30:61"
                                        }
                                    ]
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12610,
                            "nodeType": "StructuredDocumentation",
                            "src": "6068:208:61",
                            "text": " @dev Returns the square root of a number. It the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."
                        },
                        "id": 12819,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "sqrt",
                        "nameLocation": "6290:4:61",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12613,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12612,
                                    "mutability": "mutable",
                                    "name": "a",
                                    "nameLocation": "6303:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12819,
                                    "src": "6295:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12611,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6295:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6294:11:61"
                        },
                        "returnParameters": {
                            "id": 12616,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12615,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12819,
                                    "src": "6329:7:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12614,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6329:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6328:9:61"
                        },
                        "scope": 12856,
                        "src": "6281:2206:61",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 12854,
                            "nodeType": "Block",
                            "src": "8663:161:61",
                            "statements": [
                                {
                                    "assignments": [
                                        12831
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 12831,
                                            "mutability": "mutable",
                                            "name": "result",
                                            "nameLocation": "8681:6:61",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 12854,
                                            "src": "8673:14:61",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 12830,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "8673:7:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 12835,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 12833,
                                                "name": "a",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12822,
                                                "src": "8695:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 12832,
                                            "name": "sqrt",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                12819,
                                                12855
                                            ],
                                            "referencedDeclaration": 12819,
                                            "src": "8690:4:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 12834,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8690:7:61",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8673:24:61"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "id": 12845,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_enum$_Rounding_$12359",
                                                "typeString": "enum Math.Rounding"
                                            },
                                            "id": 12839,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 12836,
                                                "name": "rounding",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12825,
                                                "src": "8711:8:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_Rounding_$12359",
                                                    "typeString": "enum Math.Rounding"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "expression": {
                                                    "id": 12837,
                                                    "name": "Rounding",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12359,
                                                    "src": "8723:8:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_enum$_Rounding_$12359_$",
                                                        "typeString": "type(enum Math.Rounding)"
                                                    }
                                                },
                                                "id": 12838,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberName": "Up",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 12357,
                                                "src": "8723:11:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_Rounding_$12359",
                                                    "typeString": "enum Math.Rounding"
                                                }
                                            },
                                            "src": "8711:23:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 12844,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 12842,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 12840,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12831,
                                                    "src": "8738:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "*",
                                                "rightExpression": {
                                                    "id": 12841,
                                                    "name": "result",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12831,
                                                    "src": "8747:6:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "8738:15:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<",
                                            "rightExpression": {
                                                "id": 12843,
                                                "name": "a",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 12822,
                                                "src": "8756:1:61",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "src": "8738:19:61",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "src": "8711:46:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 12851,
                                    "nodeType": "IfStatement",
                                    "src": "8707:88:61",
                                    "trueBody": {
                                        "id": 12850,
                                        "nodeType": "Block",
                                        "src": "8759:36:61",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 12848,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 12846,
                                                        "name": "result",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 12831,
                                                        "src": "8773:6:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "hexValue": "31",
                                                        "id": 12847,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8783:1:61",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "8773:11:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 12849,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8773:11:61"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "id": 12852,
                                        "name": "result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12831,
                                        "src": "8811:6:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 12829,
                                    "id": 12853,
                                    "nodeType": "Return",
                                    "src": "8804:13:61"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 12820,
                            "nodeType": "StructuredDocumentation",
                            "src": "8493:89:61",
                            "text": " @notice Calculates sqrt(a), following the selected rounding direction."
                        },
                        "id": 12855,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "sqrt",
                        "nameLocation": "8596:4:61",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 12826,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12822,
                                    "mutability": "mutable",
                                    "name": "a",
                                    "nameLocation": "8609:1:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12855,
                                    "src": "8601:9:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12821,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8601:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 12825,
                                    "mutability": "mutable",
                                    "name": "rounding",
                                    "nameLocation": "8621:8:61",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12855,
                                    "src": "8612:17:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Rounding_$12359",
                                        "typeString": "enum Math.Rounding"
                                    },
                                    "typeName": {
                                        "id": 12824,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 12823,
                                            "name": "Rounding",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 12359,
                                            "src": "8612:8:61"
                                        },
                                        "referencedDeclaration": 12359,
                                        "src": "8612:8:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_Rounding_$12359",
                                            "typeString": "enum Math.Rounding"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "8600:30:61"
                        },
                        "returnParameters": {
                            "id": 12829,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 12828,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 12855,
                                    "src": "8654:7:61",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 12827,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8654:7:61",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "8653:9:61"
                        },
                        "scope": 12856,
                        "src": "8587:237:61",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    }
                ],
                "scope": 12857,
                "src": "202:8624:61",
                "usedErrors": []
            }
        ],
        "src": "103:8724:61"
    },
    "compiler": {
        "name": "solc",
        "version": "0.8.7+commit.e28d00a7.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.1.0",
    "updatedAt": "2023-03-16T16:54:15.286Z",
    "devdoc": {
        "details": "Standard math utilities missing in the Solidity language.",
        "kind": "dev",
        "methods": {},
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
    }
}
