{
    "status": "success",
    "info": "get smartContract",
    "data": {
        "type": "SourceUnit",
        "children": [
            {
                "type": "PragmaDirective",
                "name": "solidity",
                "value": "^0.8.0"
            },
            {
                "type": "ContractDefinition",
                "name": "Pairing",
                "baseContracts": [],
                "subNodes": [
                    {
                        "type": "StructDefinition",
                        "name": "G1Point",
                        "members": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "ElementaryTypeName",
                                    "name": "uint",
                                    "stateMutability": null
                                },
                                "name": "X",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "X"
                                },
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "ElementaryTypeName",
                                    "name": "uint",
                                    "stateMutability": null
                                },
                                "name": "Y",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "Y"
                                },
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ]
                    },
                    {
                        "type": "StructDefinition",
                        "name": "G2Point",
                        "members": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "ArrayTypeName",
                                    "baseTypeName": {
                                        "type": "ElementaryTypeName",
                                        "name": "uint",
                                        "stateMutability": null
                                    },
                                    "length": {
                                        "type": "NumberLiteral",
                                        "number": "2",
                                        "subdenomination": null
                                    }
                                },
                                "name": "X",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "X"
                                },
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "ArrayTypeName",
                                    "baseTypeName": {
                                        "type": "ElementaryTypeName",
                                        "name": "uint",
                                        "stateMutability": null
                                    },
                                    "length": {
                                        "type": "NumberLiteral",
                                        "number": "2",
                                        "subdenomination": null
                                    }
                                },
                                "name": "Y",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "Y"
                                },
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ]
                    },
                    {
                        "type": "FunctionDefinition",
                        "name": "P1",
                        "parameters": [],
                        "returnParameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": null,
                                "identifier": null,
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "body": {
                            "type": "Block",
                            "statements": [
                                {
                                    "type": "ReturnStatement",
                                    "expression": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "Identifier",
                                            "name": "G1Point"
                                        },
                                        "arguments": [
                                            {
                                                "type": "NumberLiteral",
                                                "number": "1",
                                                "subdenomination": null
                                            },
                                            {
                                                "type": "NumberLiteral",
                                                "number": "2",
                                                "subdenomination": null
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                }
                            ]
                        },
                        "visibility": "internal",
                        "modifiers": [],
                        "override": null,
                        "isConstructor": false,
                        "isReceiveEther": false,
                        "isFallback": false,
                        "isVirtual": false,
                        "stateMutability": "pure"
                    },
                    {
                        "type": "FunctionDefinition",
                        "name": "P2",
                        "parameters": [],
                        "returnParameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G2Point"
                                },
                                "name": null,
                                "identifier": null,
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "body": {
                            "type": "Block",
                            "statements": [
                                {
                                    "type": "ReturnStatement",
                                    "expression": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "Identifier",
                                            "name": "G2Point"
                                        },
                                        "arguments": [
                                            {
                                                "type": "TupleExpression",
                                                "components": [
                                                    {
                                                        "type": "NumberLiteral",
                                                        "number": "10857046999023057135944570762232829481370756359578518086990519993285655852781",
                                                        "subdenomination": null
                                                    },
                                                    {
                                                        "type": "NumberLiteral",
                                                        "number": "11559732032986387107991004021392285783925812861821192530917403151452391805634",
                                                        "subdenomination": null
                                                    }
                                                ],
                                                "isArray": true
                                            },
                                            {
                                                "type": "TupleExpression",
                                                "components": [
                                                    {
                                                        "type": "NumberLiteral",
                                                        "number": "8495653923123431417604973247489272438418190587263600148770280649306958101930",
                                                        "subdenomination": null
                                                    },
                                                    {
                                                        "type": "NumberLiteral",
                                                        "number": "4082367875863433681332203403145435568316851327593401208105741076214120093531",
                                                        "subdenomination": null
                                                    }
                                                ],
                                                "isArray": true
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                }
                            ]
                        },
                        "visibility": "internal",
                        "modifiers": [],
                        "override": null,
                        "isConstructor": false,
                        "isReceiveEther": false,
                        "isFallback": false,
                        "isVirtual": false,
                        "stateMutability": "pure"
                    },
                    {
                        "type": "FunctionDefinition",
                        "name": "negate",
                        "parameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": "p",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "p"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "returnParameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": null,
                                "identifier": null,
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "body": {
                            "type": "Block",
                            "statements": [
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ElementaryTypeName",
                                                "name": "uint",
                                                "stateMutability": null
                                            },
                                            "name": "q",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "q"
                                            },
                                            "storageLocation": null,
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": {
                                        "type": "NumberLiteral",
                                        "number": "21888242871839275222246405745257275088696311157297823662689037894645226208583",
                                        "subdenomination": null
                                    }
                                },
                                {
                                    "type": "IfStatement",
                                    "condition": {
                                        "type": "BinaryOperation",
                                        "operator": "&&",
                                        "left": {
                                            "type": "BinaryOperation",
                                            "operator": "==",
                                            "left": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "p"
                                                },
                                                "memberName": "X"
                                            },
                                            "right": {
                                                "type": "NumberLiteral",
                                                "number": "0",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "BinaryOperation",
                                            "operator": "==",
                                            "left": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "p"
                                                },
                                                "memberName": "Y"
                                            },
                                            "right": {
                                                "type": "NumberLiteral",
                                                "number": "0",
                                                "subdenomination": null
                                            }
                                        }
                                    },
                                    "trueBody": {
                                        "type": "ReturnStatement",
                                        "expression": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "Identifier",
                                                "name": "G1Point"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "NumberLiteral",
                                                    "number": "0",
                                                    "subdenomination": null
                                                },
                                                {
                                                    "type": "NumberLiteral",
                                                    "number": "0",
                                                    "subdenomination": null
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    },
                                    "falseBody": null
                                },
                                {
                                    "type": "ReturnStatement",
                                    "expression": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "Identifier",
                                            "name": "G1Point"
                                        },
                                        "arguments": [
                                            {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "p"
                                                },
                                                "memberName": "X"
                                            },
                                            {
                                                "type": "BinaryOperation",
                                                "operator": "-",
                                                "left": {
                                                    "type": "Identifier",
                                                    "name": "q"
                                                },
                                                "right": {
                                                    "type": "TupleExpression",
                                                    "components": [
                                                        {
                                                            "type": "BinaryOperation",
                                                            "operator": "%",
                                                            "left": {
                                                                "type": "MemberAccess",
                                                                "expression": {
                                                                    "type": "Identifier",
                                                                    "name": "p"
                                                                },
                                                                "memberName": "Y"
                                                            },
                                                            "right": {
                                                                "type": "Identifier",
                                                                "name": "q"
                                                            }
                                                        }
                                                    ],
                                                    "isArray": false
                                                }
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                }
                            ]
                        },
                        "visibility": "internal",
                        "modifiers": [],
                        "override": null,
                        "isConstructor": false,
                        "isReceiveEther": false,
                        "isFallback": false,
                        "isVirtual": false,
                        "stateMutability": "pure"
                    },
                    {
                        "type": "FunctionDefinition",
                        "name": "addition",
                        "parameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": "p1",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "p1"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": "p2",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "p2"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "returnParameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": "r",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "r"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "body": {
                            "type": "Block",
                            "statements": [
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "ElementaryTypeName",
                                                    "name": "uint",
                                                    "stateMutability": null
                                                },
                                                "length": {
                                                    "type": "NumberLiteral",
                                                    "number": "4",
                                                    "subdenomination": null
                                                }
                                            },
                                            "name": "input",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "input"
                                            },
                                            "storageLocation": "memory",
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": null
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "input"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "0",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "MemberAccess",
                                            "expression": {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            "memberName": "X"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "input"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "1",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "MemberAccess",
                                            "expression": {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            "memberName": "Y"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "input"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "2",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "MemberAccess",
                                            "expression": {
                                                "type": "Identifier",
                                                "name": "p2"
                                            },
                                            "memberName": "X"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "input"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "3",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "MemberAccess",
                                            "expression": {
                                                "type": "Identifier",
                                                "name": "p2"
                                            },
                                            "memberName": "Y"
                                        }
                                    }
                                },
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ElementaryTypeName",
                                                "name": "bool",
                                                "stateMutability": null
                                            },
                                            "name": "success",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "success"
                                            },
                                            "storageLocation": null,
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": null
                                },
                                {
                                    "type": "InlineAssemblyStatement",
                                    "language": null,
                                    "body": {
                                        "type": "AssemblyBlock",
                                        "operations": [
                                            {
                                                "type": "AssemblyAssignment",
                                                "names": [
                                                    {
                                                        "type": "Identifier",
                                                        "name": "success"
                                                    }
                                                ],
                                                "expression": {
                                                    "type": "AssemblyCall",
                                                    "functionName": "staticcall",
                                                    "arguments": [
                                                        {
                                                            "type": "AssemblyCall",
                                                            "functionName": "sub",
                                                            "arguments": [
                                                                {
                                                                    "type": "AssemblyCall",
                                                                    "functionName": "gas",
                                                                    "arguments": []
                                                                },
                                                                {
                                                                    "type": "DecimalNumber",
                                                                    "value": "2000"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "type": "DecimalNumber",
                                                            "value": "6"
                                                        },
                                                        {
                                                            "type": "AssemblyCall",
                                                            "functionName": "input",
                                                            "arguments": []
                                                        },
                                                        {
                                                            "type": "HexNumber",
                                                            "value": "0xc0"
                                                        },
                                                        {
                                                            "type": "AssemblyCall",
                                                            "functionName": "r",
                                                            "arguments": []
                                                        },
                                                        {
                                                            "type": "HexNumber",
                                                            "value": "0x60"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "type": "AssemblySwitch",
                                                "expression": {
                                                    "type": "AssemblyCall",
                                                    "functionName": "success",
                                                    "arguments": []
                                                },
                                                "cases": [
                                                    {
                                                        "type": "AssemblyCase",
                                                        "block": {
                                                            "type": "AssemblyBlock",
                                                            "operations": [
                                                                {
                                                                    "type": "AssemblyCall",
                                                                    "functionName": "invalid",
                                                                    "arguments": []
                                                                }
                                                            ]
                                                        },
                                                        "value": {
                                                            "type": "DecimalNumber",
                                                            "value": "0"
                                                        },
                                                        "default": false
                                                    }
                                                ]
                                            }
                                        ]
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "Identifier",
                                            "name": "require"
                                        },
                                        "arguments": [
                                            {
                                                "type": "Identifier",
                                                "name": "success"
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                }
                            ]
                        },
                        "visibility": "internal",
                        "modifiers": [],
                        "override": null,
                        "isConstructor": false,
                        "isReceiveEther": false,
                        "isFallback": false,
                        "isVirtual": false,
                        "stateMutability": "view"
                    },
                    {
                        "type": "FunctionDefinition",
                        "name": "scalar_mul",
                        "parameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": "p",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "p"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "ElementaryTypeName",
                                    "name": "uint",
                                    "stateMutability": null
                                },
                                "name": "s",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "s"
                                },
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "returnParameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": "r",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "r"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "body": {
                            "type": "Block",
                            "statements": [
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "ElementaryTypeName",
                                                    "name": "uint",
                                                    "stateMutability": null
                                                },
                                                "length": {
                                                    "type": "NumberLiteral",
                                                    "number": "3",
                                                    "subdenomination": null
                                                }
                                            },
                                            "name": "input",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "input"
                                            },
                                            "storageLocation": "memory",
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": null
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "input"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "0",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "MemberAccess",
                                            "expression": {
                                                "type": "Identifier",
                                                "name": "p"
                                            },
                                            "memberName": "X"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "input"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "1",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "MemberAccess",
                                            "expression": {
                                                "type": "Identifier",
                                                "name": "p"
                                            },
                                            "memberName": "Y"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "input"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "2",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "s"
                                        }
                                    }
                                },
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ElementaryTypeName",
                                                "name": "bool",
                                                "stateMutability": null
                                            },
                                            "name": "success",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "success"
                                            },
                                            "storageLocation": null,
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": null
                                },
                                {
                                    "type": "InlineAssemblyStatement",
                                    "language": null,
                                    "body": {
                                        "type": "AssemblyBlock",
                                        "operations": [
                                            {
                                                "type": "AssemblyAssignment",
                                                "names": [
                                                    {
                                                        "type": "Identifier",
                                                        "name": "success"
                                                    }
                                                ],
                                                "expression": {
                                                    "type": "AssemblyCall",
                                                    "functionName": "staticcall",
                                                    "arguments": [
                                                        {
                                                            "type": "AssemblyCall",
                                                            "functionName": "sub",
                                                            "arguments": [
                                                                {
                                                                    "type": "AssemblyCall",
                                                                    "functionName": "gas",
                                                                    "arguments": []
                                                                },
                                                                {
                                                                    "type": "DecimalNumber",
                                                                    "value": "2000"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "type": "DecimalNumber",
                                                            "value": "7"
                                                        },
                                                        {
                                                            "type": "AssemblyCall",
                                                            "functionName": "input",
                                                            "arguments": []
                                                        },
                                                        {
                                                            "type": "HexNumber",
                                                            "value": "0x80"
                                                        },
                                                        {
                                                            "type": "AssemblyCall",
                                                            "functionName": "r",
                                                            "arguments": []
                                                        },
                                                        {
                                                            "type": "HexNumber",
                                                            "value": "0x60"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "type": "AssemblySwitch",
                                                "expression": {
                                                    "type": "AssemblyCall",
                                                    "functionName": "success",
                                                    "arguments": []
                                                },
                                                "cases": [
                                                    {
                                                        "type": "AssemblyCase",
                                                        "block": {
                                                            "type": "AssemblyBlock",
                                                            "operations": [
                                                                {
                                                                    "type": "AssemblyCall",
                                                                    "functionName": "invalid",
                                                                    "arguments": []
                                                                }
                                                            ]
                                                        },
                                                        "value": {
                                                            "type": "DecimalNumber",
                                                            "value": "0"
                                                        },
                                                        "default": false
                                                    }
                                                ]
                                            }
                                        ]
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "Identifier",
                                            "name": "require"
                                        },
                                        "arguments": [
                                            {
                                                "type": "Identifier",
                                                "name": "success"
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                }
                            ]
                        },
                        "visibility": "internal",
                        "modifiers": [],
                        "override": null,
                        "isConstructor": false,
                        "isReceiveEther": false,
                        "isFallback": false,
                        "isVirtual": false,
                        "stateMutability": "view"
                    },
                    {
                        "type": "FunctionDefinition",
                        "name": "pairing",
                        "parameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "ArrayTypeName",
                                    "baseTypeName": {
                                        "type": "UserDefinedTypeName",
                                        "namePath": "G1Point"
                                    },
                                    "length": null
                                },
                                "name": "p1",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "p1"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "ArrayTypeName",
                                    "baseTypeName": {
                                        "type": "UserDefinedTypeName",
                                        "namePath": "G2Point"
                                    },
                                    "length": null
                                },
                                "name": "p2",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "p2"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "returnParameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "ElementaryTypeName",
                                    "name": "bool",
                                    "stateMutability": null
                                },
                                "name": null,
                                "identifier": null,
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "body": {
                            "type": "Block",
                            "statements": [
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "Identifier",
                                            "name": "require"
                                        },
                                        "arguments": [
                                            {
                                                "type": "BinaryOperation",
                                                "operator": "==",
                                                "left": {
                                                    "type": "MemberAccess",
                                                    "expression": {
                                                        "type": "Identifier",
                                                        "name": "p1"
                                                    },
                                                    "memberName": "length"
                                                },
                                                "right": {
                                                    "type": "MemberAccess",
                                                    "expression": {
                                                        "type": "Identifier",
                                                        "name": "p2"
                                                    },
                                                    "memberName": "length"
                                                }
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                },
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ElementaryTypeName",
                                                "name": "uint",
                                                "stateMutability": null
                                            },
                                            "name": "elements",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "elements"
                                            },
                                            "storageLocation": null,
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": {
                                        "type": "MemberAccess",
                                        "expression": {
                                            "type": "Identifier",
                                            "name": "p1"
                                        },
                                        "memberName": "length"
                                    }
                                },
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ElementaryTypeName",
                                                "name": "uint",
                                                "stateMutability": null
                                            },
                                            "name": "inputSize",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "inputSize"
                                            },
                                            "storageLocation": null,
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": {
                                        "type": "BinaryOperation",
                                        "operator": "*",
                                        "left": {
                                            "type": "Identifier",
                                            "name": "elements"
                                        },
                                        "right": {
                                            "type": "NumberLiteral",
                                            "number": "6",
                                            "subdenomination": null
                                        }
                                    }
                                },
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "ElementaryTypeName",
                                                    "name": "uint",
                                                    "stateMutability": null
                                                },
                                                "length": null
                                            },
                                            "name": "input",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "input"
                                            },
                                            "storageLocation": "memory",
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "NewExpression",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "ElementaryTypeName",
                                                    "name": "uint",
                                                    "stateMutability": null
                                                },
                                                "length": null
                                            }
                                        },
                                        "arguments": [
                                            {
                                                "type": "Identifier",
                                                "name": "inputSize"
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                },
                                {
                                    "type": "ForStatement",
                                    "initExpression": {
                                        "type": "VariableDeclarationStatement",
                                        "variables": [
                                            {
                                                "type": "VariableDeclaration",
                                                "typeName": {
                                                    "type": "ElementaryTypeName",
                                                    "name": "uint",
                                                    "stateMutability": null
                                                },
                                                "name": "i",
                                                "identifier": {
                                                    "type": "Identifier",
                                                    "name": "i"
                                                },
                                                "storageLocation": null,
                                                "isStateVar": false,
                                                "isIndexed": false,
                                                "expression": null
                                            }
                                        ],
                                        "initialValue": {
                                            "type": "NumberLiteral",
                                            "number": "0",
                                            "subdenomination": null
                                        }
                                    },
                                    "conditionExpression": {
                                        "type": "BinaryOperation",
                                        "operator": "<",
                                        "left": {
                                            "type": "Identifier",
                                            "name": "i"
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "elements"
                                        }
                                    },
                                    "loopExpression": {
                                        "type": "ExpressionStatement",
                                        "expression": {
                                            "type": "UnaryOperation",
                                            "operator": "++",
                                            "subExpression": {
                                                "type": "Identifier",
                                                "name": "i"
                                            },
                                            "isPrefix": false
                                        }
                                    },
                                    "body": {
                                        "type": "Block",
                                        "statements": [
                                            {
                                                "type": "ExpressionStatement",
                                                "expression": {
                                                    "type": "BinaryOperation",
                                                    "operator": "=",
                                                    "left": {
                                                        "type": "IndexAccess",
                                                        "base": {
                                                            "type": "Identifier",
                                                            "name": "input"
                                                        },
                                                        "index": {
                                                            "type": "BinaryOperation",
                                                            "operator": "+",
                                                            "left": {
                                                                "type": "BinaryOperation",
                                                                "operator": "*",
                                                                "left": {
                                                                    "type": "Identifier",
                                                                    "name": "i"
                                                                },
                                                                "right": {
                                                                    "type": "NumberLiteral",
                                                                    "number": "6",
                                                                    "subdenomination": null
                                                                }
                                                            },
                                                            "right": {
                                                                "type": "NumberLiteral",
                                                                "number": "0",
                                                                "subdenomination": null
                                                            }
                                                        }
                                                    },
                                                    "right": {
                                                        "type": "MemberAccess",
                                                        "expression": {
                                                            "type": "IndexAccess",
                                                            "base": {
                                                                "type": "Identifier",
                                                                "name": "p1"
                                                            },
                                                            "index": {
                                                                "type": "Identifier",
                                                                "name": "i"
                                                            }
                                                        },
                                                        "memberName": "X"
                                                    }
                                                }
                                            },
                                            {
                                                "type": "ExpressionStatement",
                                                "expression": {
                                                    "type": "BinaryOperation",
                                                    "operator": "=",
                                                    "left": {
                                                        "type": "IndexAccess",
                                                        "base": {
                                                            "type": "Identifier",
                                                            "name": "input"
                                                        },
                                                        "index": {
                                                            "type": "BinaryOperation",
                                                            "operator": "+",
                                                            "left": {
                                                                "type": "BinaryOperation",
                                                                "operator": "*",
                                                                "left": {
                                                                    "type": "Identifier",
                                                                    "name": "i"
                                                                },
                                                                "right": {
                                                                    "type": "NumberLiteral",
                                                                    "number": "6",
                                                                    "subdenomination": null
                                                                }
                                                            },
                                                            "right": {
                                                                "type": "NumberLiteral",
                                                                "number": "1",
                                                                "subdenomination": null
                                                            }
                                                        }
                                                    },
                                                    "right": {
                                                        "type": "MemberAccess",
                                                        "expression": {
                                                            "type": "IndexAccess",
                                                            "base": {
                                                                "type": "Identifier",
                                                                "name": "p1"
                                                            },
                                                            "index": {
                                                                "type": "Identifier",
                                                                "name": "i"
                                                            }
                                                        },
                                                        "memberName": "Y"
                                                    }
                                                }
                                            },
                                            {
                                                "type": "ExpressionStatement",
                                                "expression": {
                                                    "type": "BinaryOperation",
                                                    "operator": "=",
                                                    "left": {
                                                        "type": "IndexAccess",
                                                        "base": {
                                                            "type": "Identifier",
                                                            "name": "input"
                                                        },
                                                        "index": {
                                                            "type": "BinaryOperation",
                                                            "operator": "+",
                                                            "left": {
                                                                "type": "BinaryOperation",
                                                                "operator": "*",
                                                                "left": {
                                                                    "type": "Identifier",
                                                                    "name": "i"
                                                                },
                                                                "right": {
                                                                    "type": "NumberLiteral",
                                                                    "number": "6",
                                                                    "subdenomination": null
                                                                }
                                                            },
                                                            "right": {
                                                                "type": "NumberLiteral",
                                                                "number": "2",
                                                                "subdenomination": null
                                                            }
                                                        }
                                                    },
                                                    "right": {
                                                        "type": "IndexAccess",
                                                        "base": {
                                                            "type": "MemberAccess",
                                                            "expression": {
                                                                "type": "IndexAccess",
                                                                "base": {
                                                                    "type": "Identifier",
                                                                    "name": "p2"
                                                                },
                                                                "index": {
                                                                    "type": "Identifier",
                                                                    "name": "i"
                                                                }
                                                            },
                                                            "memberName": "X"
                                                        },
                                                        "index": {
                                                            "type": "NumberLiteral",
                                                            "number": "1",
                                                            "subdenomination": null
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "type": "ExpressionStatement",
                                                "expression": {
                                                    "type": "BinaryOperation",
                                                    "operator": "=",
                                                    "left": {
                                                        "type": "IndexAccess",
                                                        "base": {
                                                            "type": "Identifier",
                                                            "name": "input"
                                                        },
                                                        "index": {
                                                            "type": "BinaryOperation",
                                                            "operator": "+",
                                                            "left": {
                                                                "type": "BinaryOperation",
                                                                "operator": "*",
                                                                "left": {
                                                                    "type": "Identifier",
                                                                    "name": "i"
                                                                },
                                                                "right": {
                                                                    "type": "NumberLiteral",
                                                                    "number": "6",
                                                                    "subdenomination": null
                                                                }
                                                            },
                                                            "right": {
                                                                "type": "NumberLiteral",
                                                                "number": "3",
                                                                "subdenomination": null
                                                            }
                                                        }
                                                    },
                                                    "right": {
                                                        "type": "IndexAccess",
                                                        "base": {
                                                            "type": "MemberAccess",
                                                            "expression": {
                                                                "type": "IndexAccess",
                                                                "base": {
                                                                    "type": "Identifier",
                                                                    "name": "p2"
                                                                },
                                                                "index": {
                                                                    "type": "Identifier",
                                                                    "name": "i"
                                                                }
                                                            },
                                                            "memberName": "X"
                                                        },
                                                        "index": {
                                                            "type": "NumberLiteral",
                                                            "number": "0",
                                                            "subdenomination": null
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "type": "ExpressionStatement",
                                                "expression": {
                                                    "type": "BinaryOperation",
                                                    "operator": "=",
                                                    "left": {
                                                        "type": "IndexAccess",
                                                        "base": {
                                                            "type": "Identifier",
                                                            "name": "input"
                                                        },
                                                        "index": {
                                                            "type": "BinaryOperation",
                                                            "operator": "+",
                                                            "left": {
                                                                "type": "BinaryOperation",
                                                                "operator": "*",
                                                                "left": {
                                                                    "type": "Identifier",
                                                                    "name": "i"
                                                                },
                                                                "right": {
                                                                    "type": "NumberLiteral",
                                                                    "number": "6",
                                                                    "subdenomination": null
                                                                }
                                                            },
                                                            "right": {
                                                                "type": "NumberLiteral",
                                                                "number": "4",
                                                                "subdenomination": null
                                                            }
                                                        }
                                                    },
                                                    "right": {
                                                        "type": "IndexAccess",
                                                        "base": {
                                                            "type": "MemberAccess",
                                                            "expression": {
                                                                "type": "IndexAccess",
                                                                "base": {
                                                                    "type": "Identifier",
                                                                    "name": "p2"
                                                                },
                                                                "index": {
                                                                    "type": "Identifier",
                                                                    "name": "i"
                                                                }
                                                            },
                                                            "memberName": "Y"
                                                        },
                                                        "index": {
                                                            "type": "NumberLiteral",
                                                            "number": "1",
                                                            "subdenomination": null
                                                        }
                                                    }
                                                }
                                            },
                                            {
                                                "type": "ExpressionStatement",
                                                "expression": {
                                                    "type": "BinaryOperation",
                                                    "operator": "=",
                                                    "left": {
                                                        "type": "IndexAccess",
                                                        "base": {
                                                            "type": "Identifier",
                                                            "name": "input"
                                                        },
                                                        "index": {
                                                            "type": "BinaryOperation",
                                                            "operator": "+",
                                                            "left": {
                                                                "type": "BinaryOperation",
                                                                "operator": "*",
                                                                "left": {
                                                                    "type": "Identifier",
                                                                    "name": "i"
                                                                },
                                                                "right": {
                                                                    "type": "NumberLiteral",
                                                                    "number": "6",
                                                                    "subdenomination": null
                                                                }
                                                            },
                                                            "right": {
                                                                "type": "NumberLiteral",
                                                                "number": "5",
                                                                "subdenomination": null
                                                            }
                                                        }
                                                    },
                                                    "right": {
                                                        "type": "IndexAccess",
                                                        "base": {
                                                            "type": "MemberAccess",
                                                            "expression": {
                                                                "type": "IndexAccess",
                                                                "base": {
                                                                    "type": "Identifier",
                                                                    "name": "p2"
                                                                },
                                                                "index": {
                                                                    "type": "Identifier",
                                                                    "name": "i"
                                                                }
                                                            },
                                                            "memberName": "Y"
                                                        },
                                                        "index": {
                                                            "type": "NumberLiteral",
                                                            "number": "0",
                                                            "subdenomination": null
                                                        }
                                                    }
                                                }
                                            }
                                        ]
                                    }
                                },
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "ElementaryTypeName",
                                                    "name": "uint",
                                                    "stateMutability": null
                                                },
                                                "length": {
                                                    "type": "NumberLiteral",
                                                    "number": "1",
                                                    "subdenomination": null
                                                }
                                            },
                                            "name": "out",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "out"
                                            },
                                            "storageLocation": "memory",
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": null
                                },
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ElementaryTypeName",
                                                "name": "bool",
                                                "stateMutability": null
                                            },
                                            "name": "success",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "success"
                                            },
                                            "storageLocation": null,
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": null
                                },
                                {
                                    "type": "InlineAssemblyStatement",
                                    "language": null,
                                    "body": {
                                        "type": "AssemblyBlock",
                                        "operations": [
                                            {
                                                "type": "AssemblyAssignment",
                                                "names": [
                                                    {
                                                        "type": "Identifier",
                                                        "name": "success"
                                                    }
                                                ],
                                                "expression": {
                                                    "type": "AssemblyCall",
                                                    "functionName": "staticcall",
                                                    "arguments": [
                                                        {
                                                            "type": "AssemblyCall",
                                                            "functionName": "sub",
                                                            "arguments": [
                                                                {
                                                                    "type": "AssemblyCall",
                                                                    "functionName": "gas",
                                                                    "arguments": []
                                                                },
                                                                {
                                                                    "type": "DecimalNumber",
                                                                    "value": "2000"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "type": "DecimalNumber",
                                                            "value": "8"
                                                        },
                                                        {
                                                            "type": "AssemblyCall",
                                                            "functionName": "add",
                                                            "arguments": [
                                                                {
                                                                    "type": "AssemblyCall",
                                                                    "functionName": "input",
                                                                    "arguments": []
                                                                },
                                                                {
                                                                    "type": "HexNumber",
                                                                    "value": "0x20"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "type": "AssemblyCall",
                                                            "functionName": "mul",
                                                            "arguments": [
                                                                {
                                                                    "type": "AssemblyCall",
                                                                    "functionName": "inputSize",
                                                                    "arguments": []
                                                                },
                                                                {
                                                                    "type": "HexNumber",
                                                                    "value": "0x20"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "type": "AssemblyCall",
                                                            "functionName": "out",
                                                            "arguments": []
                                                        },
                                                        {
                                                            "type": "HexNumber",
                                                            "value": "0x20"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "type": "AssemblySwitch",
                                                "expression": {
                                                    "type": "AssemblyCall",
                                                    "functionName": "success",
                                                    "arguments": []
                                                },
                                                "cases": [
                                                    {
                                                        "type": "AssemblyCase",
                                                        "block": {
                                                            "type": "AssemblyBlock",
                                                            "operations": [
                                                                {
                                                                    "type": "AssemblyCall",
                                                                    "functionName": "invalid",
                                                                    "arguments": []
                                                                }
                                                            ]
                                                        },
                                                        "value": {
                                                            "type": "DecimalNumber",
                                                            "value": "0"
                                                        },
                                                        "default": false
                                                    }
                                                ]
                                            }
                                        ]
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "Identifier",
                                            "name": "require"
                                        },
                                        "arguments": [
                                            {
                                                "type": "Identifier",
                                                "name": "success"
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                },
                                {
                                    "type": "ReturnStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "!=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "out"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "0",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "NumberLiteral",
                                            "number": "0",
                                            "subdenomination": null
                                        }
                                    }
                                }
                            ]
                        },
                        "visibility": "internal",
                        "modifiers": [],
                        "override": null,
                        "isConstructor": false,
                        "isReceiveEther": false,
                        "isFallback": false,
                        "isVirtual": false,
                        "stateMutability": "view"
                    },
                    {
                        "type": "FunctionDefinition",
                        "name": "pairingProd2",
                        "parameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": "a1",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "a1"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G2Point"
                                },
                                "name": "a2",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "a2"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": "b1",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "b1"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G2Point"
                                },
                                "name": "b2",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "b2"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "returnParameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "ElementaryTypeName",
                                    "name": "bool",
                                    "stateMutability": null
                                },
                                "name": null,
                                "identifier": null,
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "body": {
                            "type": "Block",
                            "statements": [
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "UserDefinedTypeName",
                                                    "namePath": "G1Point"
                                                },
                                                "length": null
                                            },
                                            "name": "p1",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            "storageLocation": "memory",
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "NewExpression",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "UserDefinedTypeName",
                                                    "namePath": "G1Point"
                                                },
                                                "length": null
                                            }
                                        },
                                        "arguments": [
                                            {
                                                "type": "NumberLiteral",
                                                "number": "2",
                                                "subdenomination": null
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                },
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "UserDefinedTypeName",
                                                    "namePath": "G2Point"
                                                },
                                                "length": null
                                            },
                                            "name": "p2",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "p2"
                                            },
                                            "storageLocation": "memory",
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "NewExpression",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "UserDefinedTypeName",
                                                    "namePath": "G2Point"
                                                },
                                                "length": null
                                            }
                                        },
                                        "arguments": [
                                            {
                                                "type": "NumberLiteral",
                                                "number": "2",
                                                "subdenomination": null
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "0",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "a1"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "1",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "b1"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p2"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "0",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "a2"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p2"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "1",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "b2"
                                        }
                                    }
                                },
                                {
                                    "type": "ReturnStatement",
                                    "expression": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "Identifier",
                                            "name": "pairing"
                                        },
                                        "arguments": [
                                            {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            {
                                                "type": "Identifier",
                                                "name": "p2"
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                }
                            ]
                        },
                        "visibility": "internal",
                        "modifiers": [],
                        "override": null,
                        "isConstructor": false,
                        "isReceiveEther": false,
                        "isFallback": false,
                        "isVirtual": false,
                        "stateMutability": "view"
                    },
                    {
                        "type": "FunctionDefinition",
                        "name": "pairingProd3",
                        "parameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": "a1",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "a1"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G2Point"
                                },
                                "name": "a2",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "a2"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": "b1",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "b1"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G2Point"
                                },
                                "name": "b2",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "b2"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": "c1",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "c1"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G2Point"
                                },
                                "name": "c2",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "c2"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "returnParameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "ElementaryTypeName",
                                    "name": "bool",
                                    "stateMutability": null
                                },
                                "name": null,
                                "identifier": null,
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "body": {
                            "type": "Block",
                            "statements": [
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "UserDefinedTypeName",
                                                    "namePath": "G1Point"
                                                },
                                                "length": null
                                            },
                                            "name": "p1",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            "storageLocation": "memory",
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "NewExpression",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "UserDefinedTypeName",
                                                    "namePath": "G1Point"
                                                },
                                                "length": null
                                            }
                                        },
                                        "arguments": [
                                            {
                                                "type": "NumberLiteral",
                                                "number": "3",
                                                "subdenomination": null
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                },
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "UserDefinedTypeName",
                                                    "namePath": "G2Point"
                                                },
                                                "length": null
                                            },
                                            "name": "p2",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "p2"
                                            },
                                            "storageLocation": "memory",
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "NewExpression",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "UserDefinedTypeName",
                                                    "namePath": "G2Point"
                                                },
                                                "length": null
                                            }
                                        },
                                        "arguments": [
                                            {
                                                "type": "NumberLiteral",
                                                "number": "3",
                                                "subdenomination": null
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "0",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "a1"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "1",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "b1"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "2",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "c1"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p2"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "0",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "a2"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p2"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "1",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "b2"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p2"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "2",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "c2"
                                        }
                                    }
                                },
                                {
                                    "type": "ReturnStatement",
                                    "expression": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "Identifier",
                                            "name": "pairing"
                                        },
                                        "arguments": [
                                            {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            {
                                                "type": "Identifier",
                                                "name": "p2"
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                }
                            ]
                        },
                        "visibility": "internal",
                        "modifiers": [],
                        "override": null,
                        "isConstructor": false,
                        "isReceiveEther": false,
                        "isFallback": false,
                        "isVirtual": false,
                        "stateMutability": "view"
                    },
                    {
                        "type": "FunctionDefinition",
                        "name": "pairingProd4",
                        "parameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": "a1",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "a1"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G2Point"
                                },
                                "name": "a2",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "a2"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": "b1",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "b1"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G2Point"
                                },
                                "name": "b2",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "b2"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": "c1",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "c1"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G2Point"
                                },
                                "name": "c2",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "c2"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G1Point"
                                },
                                "name": "d1",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "d1"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "G2Point"
                                },
                                "name": "d2",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "d2"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "returnParameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "ElementaryTypeName",
                                    "name": "bool",
                                    "stateMutability": null
                                },
                                "name": null,
                                "identifier": null,
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "body": {
                            "type": "Block",
                            "statements": [
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "UserDefinedTypeName",
                                                    "namePath": "G1Point"
                                                },
                                                "length": null
                                            },
                                            "name": "p1",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            "storageLocation": "memory",
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "NewExpression",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "UserDefinedTypeName",
                                                    "namePath": "G1Point"
                                                },
                                                "length": null
                                            }
                                        },
                                        "arguments": [
                                            {
                                                "type": "NumberLiteral",
                                                "number": "4",
                                                "subdenomination": null
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                },
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "UserDefinedTypeName",
                                                    "namePath": "G2Point"
                                                },
                                                "length": null
                                            },
                                            "name": "p2",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "p2"
                                            },
                                            "storageLocation": "memory",
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "NewExpression",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "UserDefinedTypeName",
                                                    "namePath": "G2Point"
                                                },
                                                "length": null
                                            }
                                        },
                                        "arguments": [
                                            {
                                                "type": "NumberLiteral",
                                                "number": "4",
                                                "subdenomination": null
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "0",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "a1"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "1",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "b1"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "2",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "c1"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "3",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "d1"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p2"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "0",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "a2"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p2"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "1",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "b2"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p2"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "2",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "c2"
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "Identifier",
                                                "name": "p2"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "3",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "Identifier",
                                            "name": "d2"
                                        }
                                    }
                                },
                                {
                                    "type": "ReturnStatement",
                                    "expression": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "Identifier",
                                            "name": "pairing"
                                        },
                                        "arguments": [
                                            {
                                                "type": "Identifier",
                                                "name": "p1"
                                            },
                                            {
                                                "type": "Identifier",
                                                "name": "p2"
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                }
                            ]
                        },
                        "visibility": "internal",
                        "modifiers": [],
                        "override": null,
                        "isConstructor": false,
                        "isReceiveEther": false,
                        "isFallback": false,
                        "isVirtual": false,
                        "stateMutability": "view"
                    }
                ],
                "kind": "library"
            },
            {
                "type": "ContractDefinition",
                "name": "Verifier",
                "baseContracts": [],
                "subNodes": [
                    {
                        "type": "UsingForDeclaration",
                        "typeName": null,
                        "libraryName": "Pairing"
                    },
                    {
                        "type": "StructDefinition",
                        "name": "VerifyingKey",
                        "members": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "Pairing.G1Point"
                                },
                                "name": "alpha",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "alpha"
                                },
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "Pairing.G2Point"
                                },
                                "name": "beta",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "beta"
                                },
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "Pairing.G2Point"
                                },
                                "name": "gamma",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "gamma"
                                },
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "Pairing.G2Point"
                                },
                                "name": "delta",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "delta"
                                },
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "ArrayTypeName",
                                    "baseTypeName": {
                                        "type": "UserDefinedTypeName",
                                        "namePath": "Pairing.G1Point"
                                    },
                                    "length": null
                                },
                                "name": "gamma_abc",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "gamma_abc"
                                },
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ]
                    },
                    {
                        "type": "StructDefinition",
                        "name": "Proof",
                        "members": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "Pairing.G1Point"
                                },
                                "name": "a",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "a"
                                },
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "Pairing.G2Point"
                                },
                                "name": "b",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "b"
                                },
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "Pairing.G1Point"
                                },
                                "name": "c",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "c"
                                },
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ]
                    },
                    {
                        "type": "FunctionDefinition",
                        "name": "verifyingKey",
                        "parameters": [],
                        "returnParameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "VerifyingKey"
                                },
                                "name": "vk",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "vk"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "body": {
                            "type": "Block",
                            "statements": [
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "MemberAccess",
                                            "expression": {
                                                "type": "Identifier",
                                                "name": "vk"
                                            },
                                            "memberName": "alpha"
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "G1Point"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x077bda4545904bd60fa82b8c352e21e14ded0e7bd8c942d4fd3b85f30d7cc531",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                },
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x2390e502fee1ac4ef2d416687cb2e946ecedbc89a04ba3b3120eadb2f12b7a5b",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "MemberAccess",
                                            "expression": {
                                                "type": "Identifier",
                                                "name": "vk"
                                            },
                                            "memberName": "beta"
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "G2Point"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "TupleExpression",
                                                    "components": [
                                                        {
                                                            "type": "FunctionCall",
                                                            "expression": {
                                                                "type": "TypeNameExpression",
                                                                "typeName": {
                                                                    "type": "ElementaryTypeName",
                                                                    "name": "uint256",
                                                                    "stateMutability": null
                                                                }
                                                            },
                                                            "arguments": [
                                                                {
                                                                    "type": "NumberLiteral",
                                                                    "number": "0x111d3399de36c17c0dae75cb73d3a0e6e2bfaee04399a3212cc3589382e93774",
                                                                    "subdenomination": null
                                                                }
                                                            ],
                                                            "names": [],
                                                            "identifiers": []
                                                        },
                                                        {
                                                            "type": "FunctionCall",
                                                            "expression": {
                                                                "type": "TypeNameExpression",
                                                                "typeName": {
                                                                    "type": "ElementaryTypeName",
                                                                    "name": "uint256",
                                                                    "stateMutability": null
                                                                }
                                                            },
                                                            "arguments": [
                                                                {
                                                                    "type": "NumberLiteral",
                                                                    "number": "0x0299eec14e3a178fd91712c9387c407f4679ab8ad3df2f438cbc4bf57ec47c3a",
                                                                    "subdenomination": null
                                                                }
                                                            ],
                                                            "names": [],
                                                            "identifiers": []
                                                        }
                                                    ],
                                                    "isArray": true
                                                },
                                                {
                                                    "type": "TupleExpression",
                                                    "components": [
                                                        {
                                                            "type": "FunctionCall",
                                                            "expression": {
                                                                "type": "TypeNameExpression",
                                                                "typeName": {
                                                                    "type": "ElementaryTypeName",
                                                                    "name": "uint256",
                                                                    "stateMutability": null
                                                                }
                                                            },
                                                            "arguments": [
                                                                {
                                                                    "type": "NumberLiteral",
                                                                    "number": "0x170f091f6191c80f9f4c6567ff91c62f4d317373e990db7aafda905de3086114",
                                                                    "subdenomination": null
                                                                }
                                                            ],
                                                            "names": [],
                                                            "identifiers": []
                                                        },
                                                        {
                                                            "type": "FunctionCall",
                                                            "expression": {
                                                                "type": "TypeNameExpression",
                                                                "typeName": {
                                                                    "type": "ElementaryTypeName",
                                                                    "name": "uint256",
                                                                    "stateMutability": null
                                                                }
                                                            },
                                                            "arguments": [
                                                                {
                                                                    "type": "NumberLiteral",
                                                                    "number": "0x08278195dababf50662a8f4a9d0355cf53ecabece400f38f431cda5ecb48a4c0",
                                                                    "subdenomination": null
                                                                }
                                                            ],
                                                            "names": [],
                                                            "identifiers": []
                                                        }
                                                    ],
                                                    "isArray": true
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "MemberAccess",
                                            "expression": {
                                                "type": "Identifier",
                                                "name": "vk"
                                            },
                                            "memberName": "gamma"
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "G2Point"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "TupleExpression",
                                                    "components": [
                                                        {
                                                            "type": "FunctionCall",
                                                            "expression": {
                                                                "type": "TypeNameExpression",
                                                                "typeName": {
                                                                    "type": "ElementaryTypeName",
                                                                    "name": "uint256",
                                                                    "stateMutability": null
                                                                }
                                                            },
                                                            "arguments": [
                                                                {
                                                                    "type": "NumberLiteral",
                                                                    "number": "0x0dc87b2d936a4f5db0e5a1672490d6de31892185094aba4066c6d0a0c0db5eef",
                                                                    "subdenomination": null
                                                                }
                                                            ],
                                                            "names": [],
                                                            "identifiers": []
                                                        },
                                                        {
                                                            "type": "FunctionCall",
                                                            "expression": {
                                                                "type": "TypeNameExpression",
                                                                "typeName": {
                                                                    "type": "ElementaryTypeName",
                                                                    "name": "uint256",
                                                                    "stateMutability": null
                                                                }
                                                            },
                                                            "arguments": [
                                                                {
                                                                    "type": "NumberLiteral",
                                                                    "number": "0x1f566372443ce0d64f8d268a2ac09b6ad1ce6453258444b99858d07bef2ab4b6",
                                                                    "subdenomination": null
                                                                }
                                                            ],
                                                            "names": [],
                                                            "identifiers": []
                                                        }
                                                    ],
                                                    "isArray": true
                                                },
                                                {
                                                    "type": "TupleExpression",
                                                    "components": [
                                                        {
                                                            "type": "FunctionCall",
                                                            "expression": {
                                                                "type": "TypeNameExpression",
                                                                "typeName": {
                                                                    "type": "ElementaryTypeName",
                                                                    "name": "uint256",
                                                                    "stateMutability": null
                                                                }
                                                            },
                                                            "arguments": [
                                                                {
                                                                    "type": "NumberLiteral",
                                                                    "number": "0x06261270f12263222735e9776edbdb1a226382d97592f836306a1744089f689c",
                                                                    "subdenomination": null
                                                                }
                                                            ],
                                                            "names": [],
                                                            "identifiers": []
                                                        },
                                                        {
                                                            "type": "FunctionCall",
                                                            "expression": {
                                                                "type": "TypeNameExpression",
                                                                "typeName": {
                                                                    "type": "ElementaryTypeName",
                                                                    "name": "uint256",
                                                                    "stateMutability": null
                                                                }
                                                            },
                                                            "arguments": [
                                                                {
                                                                    "type": "NumberLiteral",
                                                                    "number": "0x1928fc504a4f232dd49190369cf6bea7f4d1e08333dbe57ee3b1429f271ad6ac",
                                                                    "subdenomination": null
                                                                }
                                                            ],
                                                            "names": [],
                                                            "identifiers": []
                                                        }
                                                    ],
                                                    "isArray": true
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "MemberAccess",
                                            "expression": {
                                                "type": "Identifier",
                                                "name": "vk"
                                            },
                                            "memberName": "delta"
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "G2Point"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "TupleExpression",
                                                    "components": [
                                                        {
                                                            "type": "FunctionCall",
                                                            "expression": {
                                                                "type": "TypeNameExpression",
                                                                "typeName": {
                                                                    "type": "ElementaryTypeName",
                                                                    "name": "uint256",
                                                                    "stateMutability": null
                                                                }
                                                            },
                                                            "arguments": [
                                                                {
                                                                    "type": "NumberLiteral",
                                                                    "number": "0x04bc84df96f0468e11d4179eece7c99ac7226dc4396f597658607a50b65a214b",
                                                                    "subdenomination": null
                                                                }
                                                            ],
                                                            "names": [],
                                                            "identifiers": []
                                                        },
                                                        {
                                                            "type": "FunctionCall",
                                                            "expression": {
                                                                "type": "TypeNameExpression",
                                                                "typeName": {
                                                                    "type": "ElementaryTypeName",
                                                                    "name": "uint256",
                                                                    "stateMutability": null
                                                                }
                                                            },
                                                            "arguments": [
                                                                {
                                                                    "type": "NumberLiteral",
                                                                    "number": "0x0ca1e1a30890e6dab33d1bd1f77d7c2d12911943875e8878c95c14eda1ac0006",
                                                                    "subdenomination": null
                                                                }
                                                            ],
                                                            "names": [],
                                                            "identifiers": []
                                                        }
                                                    ],
                                                    "isArray": true
                                                },
                                                {
                                                    "type": "TupleExpression",
                                                    "components": [
                                                        {
                                                            "type": "FunctionCall",
                                                            "expression": {
                                                                "type": "TypeNameExpression",
                                                                "typeName": {
                                                                    "type": "ElementaryTypeName",
                                                                    "name": "uint256",
                                                                    "stateMutability": null
                                                                }
                                                            },
                                                            "arguments": [
                                                                {
                                                                    "type": "NumberLiteral",
                                                                    "number": "0x15cedf48635c909a7b3f0bab9082229914c3cd020625a1bf0508db4db7e6465b",
                                                                    "subdenomination": null
                                                                }
                                                            ],
                                                            "names": [],
                                                            "identifiers": []
                                                        },
                                                        {
                                                            "type": "FunctionCall",
                                                            "expression": {
                                                                "type": "TypeNameExpression",
                                                                "typeName": {
                                                                    "type": "ElementaryTypeName",
                                                                    "name": "uint256",
                                                                    "stateMutability": null
                                                                }
                                                            },
                                                            "arguments": [
                                                                {
                                                                    "type": "NumberLiteral",
                                                                    "number": "0x26b6a4d2cedbeeb8d2ce068973804ea351ee058ab0a6c9c2757ae56f55fa781b",
                                                                    "subdenomination": null
                                                                }
                                                            ],
                                                            "names": [],
                                                            "identifiers": []
                                                        }
                                                    ],
                                                    "isArray": true
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "MemberAccess",
                                            "expression": {
                                                "type": "Identifier",
                                                "name": "vk"
                                            },
                                            "memberName": "gamma_abc"
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "NewExpression",
                                                "typeName": {
                                                    "type": "ArrayTypeName",
                                                    "baseTypeName": {
                                                        "type": "UserDefinedTypeName",
                                                        "namePath": "Pairing.G1Point"
                                                    },
                                                    "length": null
                                                }
                                            },
                                            "arguments": [
                                                {
                                                    "type": "NumberLiteral",
                                                    "number": "11",
                                                    "subdenomination": null
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "vk"
                                                },
                                                "memberName": "gamma_abc"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "0",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "G1Point"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x1c27874e237eb655b4e95c5e9f627bf6791298621506cee1c373e7bd72abb695",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                },
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x19aaaccaa08ac8046f6f7dc029e2152b91efe461f13585d2ff257973478e7d27",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "vk"
                                                },
                                                "memberName": "gamma_abc"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "1",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "G1Point"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x293dd8218061f7b425c68d56daae63df57d2105de9856c5129ef5061720c4ad2",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                },
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x1bed3f9dd9d33f2fb3842f7f762dbfd9042b7567fe515a040dcc2b2f146b11ef",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "vk"
                                                },
                                                "memberName": "gamma_abc"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "2",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "G1Point"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x102310b727bf4766a5e55f177608eedfec71a1165cdd7f984d5e41280ee7b006",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                },
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x16f4be0a116b5c534d42089821731ddf05d1175b9ea03e875ea41020db1e62c6",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "vk"
                                                },
                                                "memberName": "gamma_abc"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "3",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "G1Point"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x07e8f960618823dfd8f279590ba529eabc02c7cadb9f6fd5771e328c526cd990",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                },
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x25d05f6ef046c0ec4ce2097552fcf2f6f2f44bf22ecb9d4c902b671e53cc8dbc",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "vk"
                                                },
                                                "memberName": "gamma_abc"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "4",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "G1Point"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x21beeea9cca1e0be546aab78c06f7dfacf9ffbfb71a90a711dde3a77c0a8dc5c",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                },
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x051538f040492028cb405991cfb1e11e844e584801673b105d39e2bf55253ed4",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "vk"
                                                },
                                                "memberName": "gamma_abc"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "5",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "G1Point"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x15d073eeeaef49f9a4737009f7c82f150945ed89afb6e97f5fcc867d06ea27c1",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                },
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x0224572c0614165ed2d06dc043588790f6becc191a40cee553668ceb2c5acca5",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "vk"
                                                },
                                                "memberName": "gamma_abc"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "6",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "G1Point"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x06e393c17647d5b18a12f9294adcfe9771cacf8b6f10312da49a2157a61a0a1f",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                },
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x1073a60a0efef1dfeefa5bf269977a8853ab59c0e620b60c76eae7b6d5ad74d5",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "vk"
                                                },
                                                "memberName": "gamma_abc"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "7",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "G1Point"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x1f6f49115262f0bad53645255e3752cf5d3b58be250b1d3ad87be1306048ac66",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                },
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x20cfedc68ea5ff8dd51816392d9998c191ac061d25ffc45769d169bf570846a6",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "vk"
                                                },
                                                "memberName": "gamma_abc"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "8",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "G1Point"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x2c10f7b81d1b45b71f7a246cd87cf81959f591b71cb9ce44254b679d85c76dad",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                },
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x2942e8cd83e034a87192f9c7dc074be0b54f304b993d00430f6c0e491abd33fe",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "vk"
                                                },
                                                "memberName": "gamma_abc"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "9",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "G1Point"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x221b1c4af11fb5e69937ece831e9ab9b2db7bddf2f33bfd9551d761710f1c9af",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                },
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x08c6808fb5b194ba64a1205374111a5bc21e9519fdc40dfec1069948f8bb291c",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "IndexAccess",
                                            "base": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "vk"
                                                },
                                                "memberName": "gamma_abc"
                                            },
                                            "index": {
                                                "type": "NumberLiteral",
                                                "number": "10",
                                                "subdenomination": null
                                            }
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "G1Point"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x1491e8bce2c7162102d45f3f358a7b4e16fea6dbdb5bf33a8d952c52b01b832c",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                },
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "TypeNameExpression",
                                                        "typeName": {
                                                            "type": "ElementaryTypeName",
                                                            "name": "uint256",
                                                            "stateMutability": null
                                                        }
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "NumberLiteral",
                                                            "number": "0x03ef0260675be861e873bbf31e6ef237f59b030e6c9ee363237e8a0fec3c4529",
                                                            "subdenomination": null
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                }
                            ]
                        },
                        "visibility": "internal",
                        "modifiers": [],
                        "override": null,
                        "isConstructor": false,
                        "isReceiveEther": false,
                        "isFallback": false,
                        "isVirtual": false,
                        "stateMutability": "pure"
                    },
                    {
                        "type": "FunctionDefinition",
                        "name": "verify",
                        "parameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "ArrayTypeName",
                                    "baseTypeName": {
                                        "type": "ElementaryTypeName",
                                        "name": "uint",
                                        "stateMutability": null
                                    },
                                    "length": null
                                },
                                "name": "input",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "input"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "Proof"
                                },
                                "name": "proof",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "proof"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "returnParameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "ElementaryTypeName",
                                    "name": "uint",
                                    "stateMutability": null
                                },
                                "name": null,
                                "identifier": null,
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "body": {
                            "type": "Block",
                            "statements": [
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ElementaryTypeName",
                                                "name": "uint256",
                                                "stateMutability": null
                                            },
                                            "name": "snark_scalar_field",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "snark_scalar_field"
                                            },
                                            "storageLocation": null,
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": {
                                        "type": "NumberLiteral",
                                        "number": "21888242871839275222246405745257275088548364400416034343698204186575808495617",
                                        "subdenomination": null
                                    }
                                },
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "UserDefinedTypeName",
                                                "namePath": "VerifyingKey"
                                            },
                                            "name": "vk",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "vk"
                                            },
                                            "storageLocation": "memory",
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "Identifier",
                                            "name": "verifyingKey"
                                        },
                                        "arguments": [],
                                        "names": [],
                                        "identifiers": []
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "Identifier",
                                            "name": "require"
                                        },
                                        "arguments": [
                                            {
                                                "type": "BinaryOperation",
                                                "operator": "==",
                                                "left": {
                                                    "type": "BinaryOperation",
                                                    "operator": "+",
                                                    "left": {
                                                        "type": "MemberAccess",
                                                        "expression": {
                                                            "type": "Identifier",
                                                            "name": "input"
                                                        },
                                                        "memberName": "length"
                                                    },
                                                    "right": {
                                                        "type": "NumberLiteral",
                                                        "number": "1",
                                                        "subdenomination": null
                                                    }
                                                },
                                                "right": {
                                                    "type": "MemberAccess",
                                                    "expression": {
                                                        "type": "MemberAccess",
                                                        "expression": {
                                                            "type": "Identifier",
                                                            "name": "vk"
                                                        },
                                                        "memberName": "gamma_abc"
                                                    },
                                                    "memberName": "length"
                                                }
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                },
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "UserDefinedTypeName",
                                                "namePath": "Pairing.G1Point"
                                            },
                                            "name": "vk_x",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "vk_x"
                                            },
                                            "storageLocation": "memory",
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "MemberAccess",
                                            "expression": {
                                                "type": "Identifier",
                                                "name": "Pairing"
                                            },
                                            "memberName": "G1Point"
                                        },
                                        "arguments": [
                                            {
                                                "type": "NumberLiteral",
                                                "number": "0",
                                                "subdenomination": null
                                            },
                                            {
                                                "type": "NumberLiteral",
                                                "number": "0",
                                                "subdenomination": null
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                },
                                {
                                    "type": "ForStatement",
                                    "initExpression": {
                                        "type": "VariableDeclarationStatement",
                                        "variables": [
                                            {
                                                "type": "VariableDeclaration",
                                                "typeName": {
                                                    "type": "ElementaryTypeName",
                                                    "name": "uint",
                                                    "stateMutability": null
                                                },
                                                "name": "i",
                                                "identifier": {
                                                    "type": "Identifier",
                                                    "name": "i"
                                                },
                                                "storageLocation": null,
                                                "isStateVar": false,
                                                "isIndexed": false,
                                                "expression": null
                                            }
                                        ],
                                        "initialValue": {
                                            "type": "NumberLiteral",
                                            "number": "0",
                                            "subdenomination": null
                                        }
                                    },
                                    "conditionExpression": {
                                        "type": "BinaryOperation",
                                        "operator": "<",
                                        "left": {
                                            "type": "Identifier",
                                            "name": "i"
                                        },
                                        "right": {
                                            "type": "MemberAccess",
                                            "expression": {
                                                "type": "Identifier",
                                                "name": "input"
                                            },
                                            "memberName": "length"
                                        }
                                    },
                                    "loopExpression": {
                                        "type": "ExpressionStatement",
                                        "expression": {
                                            "type": "UnaryOperation",
                                            "operator": "++",
                                            "subExpression": {
                                                "type": "Identifier",
                                                "name": "i"
                                            },
                                            "isPrefix": false
                                        }
                                    },
                                    "body": {
                                        "type": "Block",
                                        "statements": [
                                            {
                                                "type": "ExpressionStatement",
                                                "expression": {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "Identifier",
                                                        "name": "require"
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "BinaryOperation",
                                                            "operator": "<",
                                                            "left": {
                                                                "type": "IndexAccess",
                                                                "base": {
                                                                    "type": "Identifier",
                                                                    "name": "input"
                                                                },
                                                                "index": {
                                                                    "type": "Identifier",
                                                                    "name": "i"
                                                                }
                                                            },
                                                            "right": {
                                                                "type": "Identifier",
                                                                "name": "snark_scalar_field"
                                                            }
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                }
                                            },
                                            {
                                                "type": "ExpressionStatement",
                                                "expression": {
                                                    "type": "BinaryOperation",
                                                    "operator": "=",
                                                    "left": {
                                                        "type": "Identifier",
                                                        "name": "vk_x"
                                                    },
                                                    "right": {
                                                        "type": "FunctionCall",
                                                        "expression": {
                                                            "type": "MemberAccess",
                                                            "expression": {
                                                                "type": "Identifier",
                                                                "name": "Pairing"
                                                            },
                                                            "memberName": "addition"
                                                        },
                                                        "arguments": [
                                                            {
                                                                "type": "Identifier",
                                                                "name": "vk_x"
                                                            },
                                                            {
                                                                "type": "FunctionCall",
                                                                "expression": {
                                                                    "type": "MemberAccess",
                                                                    "expression": {
                                                                        "type": "Identifier",
                                                                        "name": "Pairing"
                                                                    },
                                                                    "memberName": "scalar_mul"
                                                                },
                                                                "arguments": [
                                                                    {
                                                                        "type": "IndexAccess",
                                                                        "base": {
                                                                            "type": "MemberAccess",
                                                                            "expression": {
                                                                                "type": "Identifier",
                                                                                "name": "vk"
                                                                            },
                                                                            "memberName": "gamma_abc"
                                                                        },
                                                                        "index": {
                                                                            "type": "BinaryOperation",
                                                                            "operator": "+",
                                                                            "left": {
                                                                                "type": "Identifier",
                                                                                "name": "i"
                                                                            },
                                                                            "right": {
                                                                                "type": "NumberLiteral",
                                                                                "number": "1",
                                                                                "subdenomination": null
                                                                            }
                                                                        }
                                                                    },
                                                                    {
                                                                        "type": "IndexAccess",
                                                                        "base": {
                                                                            "type": "Identifier",
                                                                            "name": "input"
                                                                        },
                                                                        "index": {
                                                                            "type": "Identifier",
                                                                            "name": "i"
                                                                        }
                                                                    }
                                                                ],
                                                                "names": [],
                                                                "identifiers": []
                                                            }
                                                        ],
                                                        "names": [],
                                                        "identifiers": []
                                                    }
                                                }
                                            }
                                        ]
                                    }
                                },
                                {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                        "type": "BinaryOperation",
                                        "operator": "=",
                                        "left": {
                                            "type": "Identifier",
                                            "name": "vk_x"
                                        },
                                        "right": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "addition"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "Identifier",
                                                    "name": "vk_x"
                                                },
                                                {
                                                    "type": "IndexAccess",
                                                    "base": {
                                                        "type": "MemberAccess",
                                                        "expression": {
                                                            "type": "Identifier",
                                                            "name": "vk"
                                                        },
                                                        "memberName": "gamma_abc"
                                                    },
                                                    "index": {
                                                        "type": "NumberLiteral",
                                                        "number": "0",
                                                        "subdenomination": null
                                                    }
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        }
                                    }
                                },
                                {
                                    "type": "IfStatement",
                                    "condition": {
                                        "type": "UnaryOperation",
                                        "operator": "!",
                                        "subExpression": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "MemberAccess",
                                                "expression": {
                                                    "type": "Identifier",
                                                    "name": "Pairing"
                                                },
                                                "memberName": "pairingProd4"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "MemberAccess",
                                                    "expression": {
                                                        "type": "Identifier",
                                                        "name": "proof"
                                                    },
                                                    "memberName": "a"
                                                },
                                                {
                                                    "type": "MemberAccess",
                                                    "expression": {
                                                        "type": "Identifier",
                                                        "name": "proof"
                                                    },
                                                    "memberName": "b"
                                                },
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "MemberAccess",
                                                        "expression": {
                                                            "type": "Identifier",
                                                            "name": "Pairing"
                                                        },
                                                        "memberName": "negate"
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "Identifier",
                                                            "name": "vk_x"
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                },
                                                {
                                                    "type": "MemberAccess",
                                                    "expression": {
                                                        "type": "Identifier",
                                                        "name": "vk"
                                                    },
                                                    "memberName": "gamma"
                                                },
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "MemberAccess",
                                                        "expression": {
                                                            "type": "Identifier",
                                                            "name": "Pairing"
                                                        },
                                                        "memberName": "negate"
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "MemberAccess",
                                                            "expression": {
                                                                "type": "Identifier",
                                                                "name": "proof"
                                                            },
                                                            "memberName": "c"
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                },
                                                {
                                                    "type": "MemberAccess",
                                                    "expression": {
                                                        "type": "Identifier",
                                                        "name": "vk"
                                                    },
                                                    "memberName": "delta"
                                                },
                                                {
                                                    "type": "FunctionCall",
                                                    "expression": {
                                                        "type": "MemberAccess",
                                                        "expression": {
                                                            "type": "Identifier",
                                                            "name": "Pairing"
                                                        },
                                                        "memberName": "negate"
                                                    },
                                                    "arguments": [
                                                        {
                                                            "type": "MemberAccess",
                                                            "expression": {
                                                                "type": "Identifier",
                                                                "name": "vk"
                                                            },
                                                            "memberName": "alpha"
                                                        }
                                                    ],
                                                    "names": [],
                                                    "identifiers": []
                                                },
                                                {
                                                    "type": "MemberAccess",
                                                    "expression": {
                                                        "type": "Identifier",
                                                        "name": "vk"
                                                    },
                                                    "memberName": "beta"
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        },
                                        "isPrefix": true
                                    },
                                    "trueBody": {
                                        "type": "ReturnStatement",
                                        "expression": {
                                            "type": "NumberLiteral",
                                            "number": "1",
                                            "subdenomination": null
                                        }
                                    },
                                    "falseBody": null
                                },
                                {
                                    "type": "ReturnStatement",
                                    "expression": {
                                        "type": "NumberLiteral",
                                        "number": "0",
                                        "subdenomination": null
                                    }
                                }
                            ]
                        },
                        "visibility": "internal",
                        "modifiers": [],
                        "override": null,
                        "isConstructor": false,
                        "isReceiveEther": false,
                        "isFallback": false,
                        "isVirtual": false,
                        "stateMutability": "view"
                    },
                    {
                        "type": "FunctionDefinition",
                        "name": "verifyTx",
                        "parameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "UserDefinedTypeName",
                                    "namePath": "Proof"
                                },
                                "name": "proof",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "proof"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            },
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "ArrayTypeName",
                                    "baseTypeName": {
                                        "type": "ElementaryTypeName",
                                        "name": "uint",
                                        "stateMutability": null
                                    },
                                    "length": {
                                        "type": "NumberLiteral",
                                        "number": "10",
                                        "subdenomination": null
                                    }
                                },
                                "name": "input",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "input"
                                },
                                "storageLocation": "memory",
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "returnParameters": [
                            {
                                "type": "VariableDeclaration",
                                "typeName": {
                                    "type": "ElementaryTypeName",
                                    "name": "bool",
                                    "stateMutability": null
                                },
                                "name": "r",
                                "identifier": {
                                    "type": "Identifier",
                                    "name": "r"
                                },
                                "storageLocation": null,
                                "isStateVar": false,
                                "isIndexed": false,
                                "expression": null
                            }
                        ],
                        "body": {
                            "type": "Block",
                            "statements": [
                                {
                                    "type": "VariableDeclarationStatement",
                                    "variables": [
                                        {
                                            "type": "VariableDeclaration",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "ElementaryTypeName",
                                                    "name": "uint",
                                                    "stateMutability": null
                                                },
                                                "length": null
                                            },
                                            "name": "inputValues",
                                            "identifier": {
                                                "type": "Identifier",
                                                "name": "inputValues"
                                            },
                                            "storageLocation": "memory",
                                            "isStateVar": false,
                                            "isIndexed": false,
                                            "expression": null
                                        }
                                    ],
                                    "initialValue": {
                                        "type": "FunctionCall",
                                        "expression": {
                                            "type": "NewExpression",
                                            "typeName": {
                                                "type": "ArrayTypeName",
                                                "baseTypeName": {
                                                    "type": "ElementaryTypeName",
                                                    "name": "uint",
                                                    "stateMutability": null
                                                },
                                                "length": null
                                            }
                                        },
                                        "arguments": [
                                            {
                                                "type": "NumberLiteral",
                                                "number": "10",
                                                "subdenomination": null
                                            }
                                        ],
                                        "names": [],
                                        "identifiers": []
                                    }
                                },
                                {
                                    "type": "ForStatement",
                                    "initExpression": {
                                        "type": "VariableDeclarationStatement",
                                        "variables": [
                                            {
                                                "type": "VariableDeclaration",
                                                "typeName": {
                                                    "type": "ElementaryTypeName",
                                                    "name": "uint",
                                                    "stateMutability": null
                                                },
                                                "name": "i",
                                                "identifier": {
                                                    "type": "Identifier",
                                                    "name": "i"
                                                },
                                                "storageLocation": null,
                                                "isStateVar": false,
                                                "isIndexed": false,
                                                "expression": null
                                            }
                                        ],
                                        "initialValue": {
                                            "type": "NumberLiteral",
                                            "number": "0",
                                            "subdenomination": null
                                        }
                                    },
                                    "conditionExpression": {
                                        "type": "BinaryOperation",
                                        "operator": "<",
                                        "left": {
                                            "type": "Identifier",
                                            "name": "i"
                                        },
                                        "right": {
                                            "type": "MemberAccess",
                                            "expression": {
                                                "type": "Identifier",
                                                "name": "input"
                                            },
                                            "memberName": "length"
                                        }
                                    },
                                    "loopExpression": {
                                        "type": "ExpressionStatement",
                                        "expression": {
                                            "type": "UnaryOperation",
                                            "operator": "++",
                                            "subExpression": {
                                                "type": "Identifier",
                                                "name": "i"
                                            },
                                            "isPrefix": false
                                        }
                                    },
                                    "body": {
                                        "type": "Block",
                                        "statements": [
                                            {
                                                "type": "ExpressionStatement",
                                                "expression": {
                                                    "type": "BinaryOperation",
                                                    "operator": "=",
                                                    "left": {
                                                        "type": "IndexAccess",
                                                        "base": {
                                                            "type": "Identifier",
                                                            "name": "inputValues"
                                                        },
                                                        "index": {
                                                            "type": "Identifier",
                                                            "name": "i"
                                                        }
                                                    },
                                                    "right": {
                                                        "type": "IndexAccess",
                                                        "base": {
                                                            "type": "Identifier",
                                                            "name": "input"
                                                        },
                                                        "index": {
                                                            "type": "Identifier",
                                                            "name": "i"
                                                        }
                                                    }
                                                }
                                            }
                                        ]
                                    }
                                },
                                {
                                    "type": "IfStatement",
                                    "condition": {
                                        "type": "BinaryOperation",
                                        "operator": "==",
                                        "left": {
                                            "type": "FunctionCall",
                                            "expression": {
                                                "type": "Identifier",
                                                "name": "verify"
                                            },
                                            "arguments": [
                                                {
                                                    "type": "Identifier",
                                                    "name": "inputValues"
                                                },
                                                {
                                                    "type": "Identifier",
                                                    "name": "proof"
                                                }
                                            ],
                                            "names": [],
                                            "identifiers": []
                                        },
                                        "right": {
                                            "type": "NumberLiteral",
                                            "number": "0",
                                            "subdenomination": null
                                        }
                                    },
                                    "trueBody": {
                                        "type": "Block",
                                        "statements": [
                                            {
                                                "type": "ReturnStatement",
                                                "expression": {
                                                    "type": "BooleanLiteral",
                                                    "value": true
                                                }
                                            }
                                        ]
                                    },
                                    "falseBody": {
                                        "type": "Block",
                                        "statements": [
                                            {
                                                "type": "ReturnStatement",
                                                "expression": {
                                                    "type": "BooleanLiteral",
                                                    "value": false
                                                }
                                            }
                                        ]
                                    }
                                }
                            ]
                        },
                        "visibility": "public",
                        "modifiers": [],
                        "override": null,
                        "isConstructor": false,
                        "isReceiveEther": false,
                        "isFallback": false,
                        "isVirtual": false,
                        "stateMutability": "view"
                    }
                ],
                "kind": "contract"
            }
        ]
    }
}